我正在尝试对我的实体之一的属性使用延迟加载
属性映射是这样的:
<property name="Foobar" type="AnsiString" column="FOOBAR" lazy="true"/>
但是,当我尝试保存此实体的实例(使用 Linq)时,它会抛出 Database QueryException 并带有以下内部异常:
NHibernate.MappingException
:没有持久化:Castle.Proxies.FooEntityProxy”
当我删除lazy =“true”项时,不再抛出异常。使用lazy="true" 有什么问题以及如何解决这个问题?
我知道这是一个迟到的答案,但我之前也遇到过同样的问题。我使用自定义拦截器来创建代理,因此我发现问题是我没有重写“GetEntityName”方法。分析 GetEntityName 方法中的代理并返回正确的类名就可以了。
就我而言,我有一个简单的扩展方法来取消代理我的对象,称为“UnProxy”,因此我对该方法的整个实现如下所示:
public override string GetEntityName(object entity)
{
if (entity == null)
return base.GetEntityName(entity);
return entity.UnProxy().GetType().FullName;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)