मुझे संग्रह लोड करने में कोई समस्या है। सेटअप मेरे पास FluentNHibernate का उपयोग करके मैप किए गए सरल-से-कई सहयोग हैं। इकाई को अपवाद को अपनाने के साथ लोड किया गया है, लेकिन संबंधित संग्रह डिस्प्ले तक पहुंच "संग्रह लोड करने के लिए अवैध पहुंच"। मैं यहां कोड के प्रासंगिक भाग पेस्ट कर दूंगा।एनएचबेर्नेट संग्रह लोडिंग, "संग्रह लोड करने के लिए अवैध पहुंच"
[Serializable]
[DataContract(IsReference = true)]
public partial class Department : Entity
{
...
[DataMember]
public virtual IList<PressJobRun> PressJobRun
{
get { return pressJobRunField; }
protected set { pressJobRunField = value; }
}
...
}
रूप
public DepartmentMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Not.Nullable()
.Length(100);
HasMany(x => x.PressJobRun)
.AsBag()
.Inverse()
.Cascade.AllDeleteOrphan()
.LazyLoad()
.BatchSize(50);
...
}
मैं भी आलसी लोड हो रहा है निष्क्रिय करने के लिए, लाइन को बाहर निकालकर और .Not.LazyLoad()
फोन करके की कोशिश की है इस प्रकार मैप किया गया, हालांकि अंत में ही है।
using (var tx = m_Repository.Session.BeginTransaction())
{
var depts = m_Repository.Session.CreateCriteria<Department>().List<Department>();
var dept = depts[0];
...
}
मैं सत्र उजागर एहसास करने के लिए बात नहीं है, लेकिन यह सुनिश्चित करें कि सत्र खुला है बनाने के लिए प्रयास में था।
जब मैं अपवाद अंदर घुसते हैं मैं स्टैक ट्रेस निम्न देखें:
at NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean writing)
at NHibernate.Collection.AbstractPersistentCollection.Read()
at NHibernate.Collection.AbstractPersistentCollection.ReadSize()
at NHibernate.Collection.PersistentBag.get_Count()
at NHibernate.DebugHelpers.CollectionProxy`1.get_Items()
दिलचस्प दुष्टात्मा यहां आता है। मैंने PressJobRun
संपत्ति की सेटर लाइन पर ब्रेकपॉइंट सेट किया है।
- अगर मैं इसे और त्वरित घड़ी
pressJobRunField
पर कदम, मैं "लोड हो रहा अपवाद करने के लिए अवैध रूप से उपयोग" देखें। - यदि मैं पहली बार जल्दी
value
चर देखता हूं, तो मुझे लोड संग्रह दिखाई देता है। सेटटर लाइन पर कदम उठाने के रूप में काम करता है।
क्या मैं
- विजुअल स्टूडियो 2012, को लक्षित .NET 4
- NHibernate 3.3.1.400
- एसक्यूएल सीई 4
- कैसल
- कैसल AutoTx facitlity का उपयोग
- मैं सत्र पी का प्रबंधन करता हूं एर WCF का अनुरोध अपने आप
मैं क्या कोशिश की है
- आलसी लोड हो रहा है
- सुनिश्चित करें कि सत्र खुला है, और यह अपमानजनक कोड के निष्पादन के दौरान एक ही सत्र है कि बनाया अक्षम करने
- toggled
Inverted
संग्रह का नक्शा (सोचा मुझे विश्वास है कि इसे उलटा होना चाहिए) - साफ़ और पुनर्निर्मित समाधान
- कॉन्फ़िगरेशन प्रबंधक में सुनिश्चित किया गया है कि समाधान में सभी परियोजनाएं
- सभी फेंकने वाले अपवादों को तोड़ने के लिए डीबगर सेट करें।डिबगर अपवाद है कि मैं संग्रह में सेट देखें