延迟加载clob列/属性

时间:2013-01-25 16:15:38

标签: c# nhibernate fluent-nhibernate

我一直在尝试优化某些查询并注意到一个查询速度很快(来自它的查询计划),但由于Clob列数据,它花了很多时间在网络I / O上。

我看到了NHibernate supports lazy loading individual properties,但我还没有能够让他们工作。

当我将LazyLoad()添加到我的clob属性时,该属性将从我的查询中排除,并且性能得到了很大改善,但是当访问该属性时,我收到以下错误:

Error: "identifier of an instance of Domain.MyClass was altered from 8741 to 0").

public class MyClassMap : ClassMap<MyClass>
{
    public MyClassMap()
    {
        ...
        Map(x => x.Description).LazyLoad();
    }
}

我尝试了相反的方向并将属性映射为正常(急切),并且我需要排除列,尝试将查询中的属性设置为懒惰,如下所示:

var query = session.QueryOver<MyClass>()
    .Fetch(x => x.Description).Lazy

但该属性仍作为原始查询的一部分加载。我不确定是否有解决方法(不确定是否可以将属性作为Component()或HasOne()的一部分延迟加载)。

注意:我读取延迟加载属性可能不受LinFu代理工厂支持(默认为NH3.x),可能需要使用Castle代理工厂(参见上次评论:{{3}虽然我还没有尝试更改代理(但还不确定如何)。

0 个答案:

没有答案