当我将属性标记为延迟加载时,NHibernate不会保留更改

时间:2013-06-05 13:06:01

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有以下类地图:

public UsersMap()
    {
        Table("Users");
        Id(x => x.Id);
        Map(x => x.Name);            
        Map(x => x.XmlData).CustomType("StringClob").CustomSqlType("text");            
        Map(x => x.Performance).CustomType<int>();
        HasMany(x => x.Roles)
            .KeyColumn("UserId")
            .Inverse()
            .Cascade
            .AllDeleteOrphan(); ///it has other properties that are mapped...

当我尝试修改用户实体(通过更改其某些属性)并提交事务时,实体存储在数据库中并且一切正常。

现在我懒得加载'XmlData'属性,因为它太大了,我不需要每次都加载它,所以我将这个属性标记为延迟加载:

Map(x => x.XmlData).CustomType("StringClob").CustomSqlType("text").LazyLoad(); 

延迟加载按预期工作,但我注意到,在更改实体并提交事务后,对它的更改不会保留。如果我从映射中删除'.LazyLoad()',一切正常,则存储更改。注意到这里是在数据库中进行的其他插入(对于不同的实体)在同一事务中工作并且它们有效,除了此更新不存在。

您对正在发生的事情有一些想法吗?

我正在使用NHibernate 3.3.3.400和SQLServer 2008。

0 个答案:

没有答案