NHibernate 中没有持久化:Castle.Proxies.Proxy 和lazy="true"?

2024-05-01

我正在尝试对我的实体之一的属性使用延迟加载

属性映射是这样的:

<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(使用前将#替换为@)

NHibernate 中没有持久化:Castle.Proxies.Proxy 和lazy="true"? 的相关文章

随机推荐