के माध्यम से नहीं, मुझे अपने वर्तमान प्रोजेक्ट में एक अजीब समस्या है। प्रश्नों के लिए आलसी लोडिंग काम नहीं करता है। जब मैं एक सूची पूछता हूं, तो निषेध सभी संगठनों को अलग से लाता है।NHibernate सत्र के माध्यम से प्रॉक्सी बनाता है। लोड(), लेकिन लिंक या मानदंड API
मैंने इसके छोटे हिस्सों को निकाला और इसे एक अलग समाधान में डाल दिया। असल में जो मुझे मिला है, वह खाता-सारणी और खाता सिंक-टेबल है। दोनों में एक आईडी और एक यूआरएल है, जबकि आईडी सिर्फ एक डीबी-गाइड है।
मेरे वर्ग हैं:
public class HippoAccount
{
public virtual Guid Id { get; set; }
public virtual string Url { get; set; }
public virtual HippoAccountSync Sync { get; set; }
}
public class HippoAccountSync
{
public virtual Guid Id { get; set; }
public virtual string Url { get; set; }
public virtual HippoAccount Account { get; set; }
}
जब मैं अब एक वस्तु लोड के माध्यम से इसे GUID है:
var account = session.Load<HippoAccount>(accountId);
Console.WriteLine(NHibernateUtil.IsPropertyInitialized(account, "Sync"))
... यह false
वापस आती है और खाते में ही एक प्रॉक्सी है।
लेकिन जब मापदंड एपीआई के माध्यम से एक सूची लोड:
var account = (HippoAccount)session
.CreateCriteria(typeof (HippoAccount))
.Add(Restrictions.Eq("Id", accountId))
.List()[0];
... संपत्ति Sync
प्रारंभ हो जाता है (एक दूसरे का चयन क्वेरी फायरिंग), और लौट आए वस्तु एक प्रॉक्सी नहीं है।
क्या यह डिफ़ॉल्ट व्यवहार है? मुझे क्या गलत हो रहा है?
मानचित्रण है:
<class name="HippoAccount" table="AllAccounts">
<id name="Id" type="guid">
<generator class="guid"/>
</id>
<property name="Url" />
<many-to-one
class="HippoAccountSync"
name="Sync"
not-found="ignore"
property-ref="Url">
<column name="url" />
</many-to-one>
</class>
<class name="HippoAccountSync"
mutable="false"
table="Accounts">
<id name="Id" type="guid">
<generator class="guid"/>
</id>
<property name="Url">
<column name="serviceUri" />
</property>
<many-to-one class="HippoAccount"
name="Account"
property-ref="Url"
not-found="ignore">
<column name="serviceUri" />
</many-to-one>
</class>
यकीन नहीं करता है, तो यह पूरी तरह से संबंधित है, लेकिन वहाँ मुद्दों के साथ नहीं पाया = "अनदेखा" कर रहे हैं: http://nhjira.koah.net/browse/NH-1001 http: //guildsocial.web703 .discountasp.net/dasblogce/टिप्पणी दृश्य, guid, ba00b19d-bd60-442b-b2e7-935277a9f1eb.aspx –
आप सही हैं। एक और मुद्दा संपत्ति-रेफरी है - यह आलसी लोडिंग को भी अक्षम करता है। http://maonet.wordpress.com/2007/12/05/lazy-load-conflicts-with-property-ref-in-many-to-one-mapping/ –