我正在通过代码映射使用 nhibenate。出于某种原因,默认情况下它会进行急切的获取,而它应该是惰性的。
下面是我的映射:
public EntityMap()
{
Lazy(true);
Id(x => x.Id, map =>
{
map.Generator(Generators.GuidComb);
map.UnsavedValue("00000000-0000-0000-0000-000000000000");
});
}
所以我尝试在基类中指定lazy(true),以便所有关系都通过延迟加载完成。
我也按惯例使用映射,其配置如下:
// foreign key convention (many2one side)
mapper.BeforeMapManyToOne += (insp, prop, map) => map.Lazy(LazyRelation.Proxy);
mapper.BeforeMapManyToOne += (insp, prop, map) => map.Fetch(FetchKind.Select);
// bag conventions (one2many side)
mapper.BeforeMapBag += (insp, prop, map) => map.Lazy(CollectionLazy.Lazy);
mapper.BeforeMapBag += (insp, prop, map) => map.Fetch(CollectionFetchMode.Select);
// set conventions (one2many side)
mapper.BeforeMapSet += (insp, prop, map) => map.Lazy(CollectionLazy.Lazy);
mapper.BeforeMapSet += (insp, prop, map) => map.Fetch(CollectionFetchMode.Select);
所以我已经尝试了所有的设置让它变得懒惰,但它仍然渴望..
下面是我用来加载数据的查询:
var session = SessionManager.GetCurrentSession();
return session.QueryOver<Customer>().List();
一对多映射指定如下:
Bag(x => x.Customer, colmap => { }, map => map.OneToMany(x => { }));
ManyToOne(x => x.Orders, map => { map.NotNullable(true); });
请帮忙!!!
添加了上面提到的所有设置以使其延迟加载,最初没有指定任何设置....