nhibernate默认执行eager fetch

时间:2013-07-18 09:31:09

标签: nhibernate nhibernate-mapping mapping-by-code

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

请帮助!!!

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

0 个答案:

没有答案