मुझे किसी SQL सर्वर 2005 डेटाबेस में किसी इकाई को सहेजने में समस्या आ रही है। मैं अपनी दृढ़ता परत के लिए NHibernate 2.0.0.3002 का उपयोग कर रहा हूं। मैपिंग सामान्य है, एक पूर्णांक आईडी के साथ,एनआईबीबर्नेट "शून्य पहचानकर्ता" एक इकाई डालने के बाद अपवाद
<id name="Id" unsaved-value="0">
<column name="Id"/>
<generator class="identity" />
</id>
मैंने शेष को ब्रेवटी के लिए छोड़ दिया है। के रूप में
public void Save(T toSave)
{
Save(new T[] { toSave });
}
public void Save(IEnumerable<T> toSave)
{
using (ISession session = SessionFactory.OpenSession())
{
foreach (T item in toSave)
{
session.SaveOrUpdate(item);
}
session.Flush();
}
}
जब सत्र पर SaveOrUpdate बुला, एक अपवाद "शून्य पहचानकर्ता" के एक संदेश के साथ फेंक दिया जाता है इस प्रकार आवेदन एक सामान्य बचाने विधि के साथ भंडार वर्ग का उपयोग कर रहा है। जब मैं डेटाबेस की जांच करता हूं तो पंक्ति सभी सही मानों के साथ डाली गई है, इसलिए मुझे लगता है कि समस्या तब होती है जब NHibernate इकाई की आईडी प्रॉपर्टी को @@ पहचान द्वारा लौटाए गए मान के साथ सेट करने का प्रयास करता है। मैं एसक्यूएल प्रोफाइलर के माध्यम से देख सकता हूं कि @@ पहचान को बुलाया जा रहा है, इसलिए मुझे समझ में नहीं आता कि अपवाद क्यों फेंक दिया गया है।
क्या किसी और को यह समस्या है?
क्या आप उस कोड को दिखा सकते हैं जो वास्तविक बचत/अद्यतन करता है और जब आप उस आईडी का उपयोग करने का प्रयास करते हैं? –
मैंने अनुरोध के रूप में कोड जोड़ा है। – gilles27
एनएचबीरनेट का कौन सा संस्करण आप बीटीडब्ल्यू चला रहे हैं? –