我有一个 NHibernate 映射,它定义了一个类型的 HasMany 关系,即一个类有另一个类的列表。
我希望 NHibernate 能够读取未提交的数据,包括由 HasMany 关系产生的列表。
我有隔离级别 ReadUncommitted 并且我能够在提交之前写入数据并读回它。
但是,列表总是空的,除非我先提交。
有没有办法让 NHibernate 使用来自 HasMany-relationships 的数据填充对象?
编辑
事实证明,类上的任何非原始类型都不会被未提交的读取填充,除非它们实际上被添加到类中。
例如,Foo
下面的类有一个列表Member
- 在数据库中 - 由Id
. 如果我使用NHibernate将一个实例Foo
和一个实例持久化到数据库中,Member
并且两者实际上都与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 关系填充复杂成员?