c# - Unmapped property in a mapped class (Fluent NHibernate 1.1) -


पृष्ठभूमि

तरल NHibernate 1.1 (LINQ को NHibernate का उपयोग कर एक रिपॉजिटरी कार्यान्वयन के साथ) एक asp.net में एमआईसीसी 2 परियोजना का उपयोग एनआईएनआईजी।

मेरे पास मैप किए गए वर्ग ( स्टेशन ) एक अन्य मैप किए गए वर्ग ( report ) के संग्रह के साथ है। मैं स्टेशन को एक सुविधा संपत्ति ( अधिकांश संदर्भ रिपोर्ट ) के लिए भी चाहूंगा जो कि रिपोर्ट को उस स्टेशन के साथ देता है सबसे हाल के टाइमस्टैम्प।

आंशिक स्कीमा

  स्टेशन -------- आईडी रिपोर्ट --------- आईडी स्टेशनइंड टाइमस्टैम्प  

आंशिक कोड

  सार्वजनिक अमूर्त वर्ग इकाई {सार्वजनिक वर्चुअल इन्ट आईडी (get; निजी सेट; }} सार्वजनिक वर्ग स्टेशन: इकाई {सार्वजनिक वर्चुअल आइएलआईटी & lt; रिपोर्ट & gt; रिपोर्टें {प्राप्त करें; निजी सेट; } सार्वजनिक स्टेशन () {रिपोर्ट = नई सूची & lt; रिपोर्ट & gt; (); }} सार्वजनिक वर्ग की रिपोर्ट: इकाई {सार्वजनिक वर्चुअल स्टेशन स्टेशन {प्राप्त करें; सेट; } सार्वजनिक वर्चुअल दिनांकटाइम टाइमस्टैम्प {get; सेट; }} सार्वजनिक स्टेशनमैप: क्लासमार्क & lt; स्टेशन & gt; {सार्वजनिक स्टेशनमैप () {आईडी (एस = & gt; एसआईडी); HasMany & lt; रिपोर्ट & gt; (s = & gt; s.Reports)। टेबल ("रिपोर्ट")। के कॉलम ("स्टेशनआईड"); }} सार्वजनिक रिपोर्टमैप: क्लासमार्क & lt; रिपोर्ट & gt; {सार्वजनिक रिपोर्टमैप () {आईडी (आर = & gt; आरआईडी); संदर्भ & lt; स्टेशन & gt; (आर = & gt; आर। स्थान, "स्टेशनआईडी"); मानचित्र (आर = & gt; आर। टेमस्टैम्प); }}  

मैंने एक अनमाइंड की गई संपत्ति को जोड़ने की कोशिश की जो कि रिपोर्टों को लौटाती है। ऑर्डरबीडीएंडेंडिंग (आर = & gt; आर। टेमस्टैम्प)। पहलेऑर डीफॉल्ट () लेकिन इसके कारण " संपत्ति को हल नहीं करें: अधिकांश संदर्भ रिपोर्ट " NHibernate.QueryException s (भले ही मैं ऑटो मैपिंग का उपयोग नहीं कर रहा हूँ)। मैंने इसे समान वापसी के साथ एक विधि के रूप में लागू करने की भी कोशिश की, लेकिन इसके कारण "सूचकांक सीमा से बाहर" अपवाद था।

क्या यह संपत्ति (बेहतर) या विधि दृष्टिकोण के साथ काम करने का एक तरीका है? या formula () , शायद?

अद्यतन

फ्लुअन्ट एनआईबीनेट कॉन्फ़िगरेशन (मेरे NinjectModule कार्यान्वयन का लोड ओवरराइड):

  इसानेशन फ्रेडर सत्रफैक्टर = फ्लू। कॉन्फ़िफ़ायर () .डेटाबेस (एमएसएसक्यूएल कॉन्फ़िगरेशन.एमएसएसक्यूएल 2008.कनेक्शन स्ट्रिंग (सेटिंग्स.कनेक्शन स्ट्रिंग))। मैपिंग (एम = & Gt; एम.फ़्लुएंट मैपिंग्स.एडफ़ोमएएसएसैंकआफ़ & lt; Domain.Station & gt; ()) .BuildSessionFactory ();  

ऐसा कोई कारण नहीं है कि आपको इस तरह की संपत्ति को मैप करना होगा - NHibernate अगर आप स्वचालन नहीं कर रहे हैं तो इसे अनदेखा कर देना चाहिए।

मुझे दाऊद के जवाब से सहमत होना होगा, ताकि आप अपने डोमेन मॉडल के अमूर्त को तोड़ सकते हों।

उस ने कहा, मुझे लगता है कि उत्तर यह है कि आपके पास एक ऐसी NHibernate क्वेरी (HQL / मानदंड / LINQ) कहीं है (एक रिपोजिटरी?) जो इस संपत्ति का उपयोग करने का प्रयास कर रहा है यही है, यह मैपिंग में नहीं है, जो समस्या है, यह डेटाबेस / कैश को पूछताछ करते समय अधिकांश रीरपोर्ट रिपोर्ट का उपयोग करने की कोशिश में है।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -