मेरे पास एक जटिल इकाई है जो किसी विशेष डेटाबेस तालिका में रिकॉर्ड खोने पर सहेजी नहीं जाएगी। जब रिकॉर्ड मौजूद होता है तो इकाई सही ढंग से बचाती है। गणना के साथ इस SqlParameterCollection = के लिएइस एसक्यूएल पैरामीटर के लिए अमान्य इंडेक्स एन गणना = एन केवल तभी जब संबंधित तालिका में शून्य रिकॉर्ड
अमान्य इंडेक्स एन एन
गूगल के जरिये पाया समाधान का एक गुच्छा और स्टैक ओवरफ़्लो पर सबसे निकट से संबंधित प्रश्नों को पढ़ने के बाद: रिकॉर्ड मैं अपवाद प्राप्त नहीं होता है जब :
- What's causing “Invalid index nn for this SqlParameterCollection with Count=nn” when a column is Null in the database?
- Invalid Index n for this SqlParameterCollection with Count=n” OR “foreign key cannot be null
मेरा मानना है कि मेरे मुद्दे को मेरे मैपिंग फाइल सेटअप के तरीके से करना है। ग्राहक इकाई व्यक्ति इकाई का संदर्भ है। व्यक्ति एक टेबल पर नक्शा करता है जिसे हमने पढ़ा है, लेकिन पहुंच नहीं लिखता है। ऐसा तब होता है जब व्यक्ति इकाई के लिए एक रिकॉर्ड मौजूद नहीं है कि मैं अपवाद उत्पन्न करता हूं। अगर रिकॉर्ड कोई मुद्दा नहीं है। मैंने ग्राहक से व्यक्ति को संदर्भ Nullable()
पर सेट कर दिया है। मैंने यह सुनिश्चित करने के लिए भी दो बार जांच की है कि मेरे पास किसी भी इकाई से दो बार मैप की गई संपत्ति नहीं है।
ग्राहक
//more mapping code...
References(x => x.Person, "snl_id").Nullable();
//more mapping code...
व्यक्ति
//more mapping code...
ReadOnly();
Id(x => x.SnlId).Column("SNL_ID");
//more mapping code...
आगे मामलों को मुश्किल करने के लिए:
यहाँ मैं उचित मैपिंग जानकारी है क्या लग रहा है, लेकिन अधिक प्रदान कर सकते हैं की जरूरत के रूप में है जब व्यक्ति व्यक्ति होता है तो NHibernate बेहतर प्रदर्शन करने के लिए हमारे पास कुछ दर्दनाक कोड है अस्तित्व में नहीं है। मुझे यकीन नहीं है कि यह यहां लागू होता है, लेकिन मुझे लगता है कि यह मेरे प्रश्न में शामिल करने के लिए काफी प्रासंगिक है। हम नीचे दिए गए कोड का उपयोग कर रहे हैं क्योंकि इसके बिना एनएचबीरनेट जेआईआरए कई प्रश्नों का निर्माण करेगा। यह समाधान इस Stack Overflow answer में उल्लिखित है।
ग्राहक के व्यक्ति संपत्ति
public virtual Person Person
{
get
{
try
{
var snlId = per.Name;
return per;
}
catch
{
return null;
}
}
set
{
per = value;
}
}
private EPerson per;
मैं अपने मैपिंग में क्या याद आ रही है कि इस अपवाद का कारण होता है? क्या इस समस्या का एक और टुकड़ा है जिसे मैं नहीं देख रहा हूं?