2011-08-22 40 views
1

我想設置fetchmode渴望在我的對象圖中有兩層深的屬性。NHibernate填充屬性,但屬性保持爲空

DetachedCriteria homeSupportServicesPlacementInvoiceQuery = DetachedCriteria.For<HomeSupportServicesPlacementInvoice>() 
      .SetFetchMode("VendorService", FetchMode.Eager) 
      .SetFetchMode("VendorService.Vendor", FetchMode.Eager); 

NHibernate的填充我的VendorService對象的正確值,對象移動到業務層但是之後,不再附加到會話,賣方屬性不再水合。我注意到這個過程的唯一另外一個怪事是,在quickwatch窗口中,調試VendorService的屬性時爲null,而Property已經設置了正確的值。

enter image description here

我在做什麼錯?

對於那些下面的問題,顯然你可以爲不在映射中的屬性設置fetchmode,它將被填充(你可以在調試中看到它),但是當你從對象中分離對象時,這些值會消失會議。

+2

你可以發佈你的財產實施和映射的代碼? –

+1

VendorService的映射是什麼樣的。檢查屬性Vendor是否正確映射 – Rippo

+0

謝謝Tom&Rippo,問題在於映射。我認爲我已經正確地檢查了它們,但是在我更新代碼時發現了這個問題。 – rie819

回答

1

查看您提供的信息我敢打賭,VendorService的映射不正確。 我會仔細檢查屬性Vendor是否正確映射。

1

代理的字段未初始化是正常的。代理繼承這些字段,但不使用它們。它只是一個將所有調用委託給實際對象(也是屬性的getter和setter)的包裝器。真正的對象是另一個實例,沒有代理,它由代理彙總。真實對象的字段應該正確初始化。

我不知道爲什麼在序列化後丟失數據。這很可能是序列化問題,而不是(非常)NH特定的。