2011-02-08 68 views
0

我試圖在全球範圍內禁止Fluent NHibernate延遲加載功能,但即使經過:C#功能NHibernate問題

LazyLoad.Never(); 
DefaultLazy.Never(); 

在我的測試代碼NHibernate不斷告訴以下:

NHibernate.InvalidProxyTypeException: 
The following types may not be used as proxies: 

XXXX: method YYYY should be 'public/protected virtual' 
     or 'protected internal virtual' 

我如果我禁用延遲加載,不想將我的類的任意方法標記爲虛擬。這是否有解決方案,或者我做錯了什麼?

+0

大約同樣的問題這篇文章的會談http://stackoverflow.com/questions/2278110/nhibernate-exception-method-add-should-be-public-protected-virtual - 或保護 – Divi 2011-02-08 00:17:16

回答

2

如果關閉延遲加載,只要您從數據庫中提取人員,Nhibernate就會嘗試檢索所有關聯屬性(例如: - 人員類具有汽車關聯屬性)。

爲了填充汽車屬性,Nhibernate通過繼承人類和覆蓋Carpark屬性創建人類的代理。

但是,如果你的車屬性是不虛,NHibernate的會看到,如果延遲加載上,如果它無法逃脫裝載性能,但是,是不是與你的應用程序,因此異常的情況。

對於一些輕閱讀: http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/