2

我正在通过代码映射使用 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); });

请帮忙!!!

添加了上面提到的所有设置以使其延迟加载,最初没有指定任何设置....

4

0 回答 0