我有一個NHibernate映射,它定義了一個類型的HasMany關係,即一個類有另一個類的列表。從HasMany讀取未經處理的數據 - 與NHibernate的關係
我希望NHibernate能夠讀取未提交的數據,包括由HasMany關係產生的列表。
我有isolationlevel ReadUncomitted,我可以在提交之前寫入數據並讀回數據。
但是,列表總是空的,除非我首先提交。
有沒有辦法讓NHibernate使用來自HasMany關係的數據填充對象?
EDIT
原來在一個類中的任何非原始類型不由未提交的讀填充,除非它們被實際添加到類。
例如,類Foo
有一個列表Member
它在數據庫中由Id
連接。如果我堅持的Foo
實例和Member
使用NHibernate的數據庫實例無一不是實際上由Id
值相關,那麼Foo
將不有Member
預期的情況下,如果我之前讀回未提交的(即完成交易)。
public class Member
{
Guid Id{ get; set; }
}
public class Foo
{
List<Member> MemberList{ get; set; }
}
// the mapping
public class FooMap
{
HasMany(x => x.MemberList).KeyColumn("Id").PropertyRef("Id");
}
但是,如果我創建的Foo
實例和Member
一個實例,並設置後者爲前者的參考和使用NHibermate堅持兩到數據庫,然後Foo
將有預期的情況下Member
當我在完成交易前閱讀它。
如果我完成了交易,那麼Foo
將在隨後的讀取中具有預期的Member
實例;只要交易完成,Member
是否僅存在具有正確FK的數據庫記錄至Foo
或它是否參考Foo
是無關緊要的。
經修訂的課題: 很可能已經NHibernate的基礎上FK-關係填充複雜的成員只有期間未提交讀?
這個問題是[與此鏈接](http:///stackoverflow.com/questions/18128666/nhibernate-populate-list-with-uncommitted-data-related-only-by-fk-in-database)@oskar也回答了。他建議使用Flush(),Evict()或Clear()讓NHibernate更新已經加載的對象。 – hlintrup
@ h.alex也提示Flush();但是,只有Evict(obj)或Clear()纔有效果。 – hlintrup