Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
默认情况下,nhibernate执行即时获取_Nhibernate_Nhibernate Mapping_Mapping By Code - Fatal编程技术网

默认情况下,nhibernate执行即时获取

默认情况下,nhibernate执行即时获取,nhibernate,nhibernate-mapping,mapping-by-code,Nhibernate,Nhibernate Mapping,Mapping By Code,我正在通过代码映射使用nhibenate。出于某种原因,它在默认情况下执行的是即时抓取,而它应该是惰性的 以下是我的地图: public EntityMap() { Lazy(true); Id(x => x.Id, map => { map.Generator(Generators.GuidComb); map.UnsavedValue("00000000-0000-0

我正在通过代码映射使用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);
          Bag(x => x.Customer, colmap => { }, map => map.OneToMany(x => { }));
          ManyToOne(x => x.Orders, map => {  map.NotNullable(true); });
因此,我尝试了所有设置,使其抓取懒惰,但它仍然抓取渴望

下面是我用来加载数据的查询:

        var session = SessionManager.GetCurrentSession();
        return session.QueryOver<Customer>().List();
请帮忙


上面提到的所有设置都是为了延迟加载而添加的,最初指定的设置中没有一个…

延迟加载的确切内容是什么?您的实体是如何建模的?执行什么SQL?我有客户表中引用的ORDERS表,订单应该延迟执行,问题中提到SQL查询…您确定映射正确吗?一个订单可以有多个客户,但一个客户只能有一个订单?这似乎是错误的做法。请发布您的实体类和映射类,这样我们就可以看到您拥有什么属性、它们是什么类型以及它们是如何映射的。另外,我要求的是执行的SQL,而不是您编写的查询。查看日志或使用NHibernate/SQL探查器。如果您使用的是json.net,它会反序列化您的代理对象,进行查询。。。通过使子对象为空,然后将它们发送到页面来测试它。。。