में किसी आईडी का मान बदलना हमारे पास संगठन नाम की एक इकाई है जिसे हम अनन्यकोनस्ट्रेन-बंडल का उपयोग करते हैं। हमारे पास NetName नाम की एक संपत्ति है जो एक अनोखा कॉन्स्ट्रेन और स्वचालित रूप से जेनरेट की गई आईडी है।RavenDB
चूंकि यह अनजान है क्योंकि हम NetName-property को आईडी के रूप में उपयोग करना चाहते हैं। इसलिए हमें अनन्य कॉन्स्ट्रेनेंट्स को यह जानने के लिए जरूरी नहीं है कि यह अद्वितीय है और जब हमारे पास NetName है तो लोड का उपयोग करने में सक्षम होने से लाभ प्राप्त करें।
हम एक आईडी के रूप में यह प्रयोग करने से पहले थोड़ा हमारे NETNAME को साफ करने की जरूरत है ताकि हम एक नए अस्थायी-संपत्ति TempUniqueNetName कहा जाता है कि अब के मूल्य रखती बनाया:
"organizations/"+ CleanupId(this.NetName)
तो अब हम करने के लिए तैयार कर रहे हैं बस उस मूल्य को हमारे आईडी पर ले जाएं। लेकिन हम इसे काम नहीं कर सकते हैं। हमारी समस्या यह है कि नीचे पैचआरक्वेट के साथ हम डेटाबेस में आईडी नामक एक नई संपत्ति के साथ समाप्त होते हैं लेकिन एक्टुअल आईडी में अभी भी वही मान है (स्क्रीनशॉट देखें)। क्या आईडी के मान को बदलने के लिए कोई बेहतर (सही) तरीका है?
निकाय:
class Organization {
public string Id { get; set; }
[UniqueConstraint]
public string NetName { get; set; }
public string TempUniqueNetName{ get; set; }
}
हम इस तरह कुछ करना चाहता हूँ:
_documentStore.DatabaseCommands.UpdateByIndex(typeof(Organizations).Name,
new IndexQuery(),
new[]
{
new PatchRequest()
{
Type = PatchCommandType.Rename,
Name = "TempUniqueNetName",
Value = new RavenJValue("Id")
}
});
प्रकाशित किया गया था यहाँ का अनुरोध: http://issues.hibernatingrhinos.com/issue/RavenDB-801 –
ठीक है, आपके उत्तर के लिए धन्यवाद। हम शायद आपके सुझाव का उपयोग करेंगे और दस्तावेज़ की प्रतिलिपि बनाएँ। यह एक बार बात है इसलिए मुझे कोई फर्क नहीं पड़ता कि इसमें कुछ समय लगेगा। उम्मीद है कि अगली बार हमें इसकी आवश्यकता होगी :) –
एफवाईआई: द रावेनडीबी देव ने जवाब दिया कि वे इस सुविधा को जोड़ने वाले नहीं हैं और इसके बजाय "इसे उपयोगकर्ता द्वारा हटाए जाने की लेनदेन संबंधी जोड़ी/आसानी से लागू किया जा सकता है । " –