MappingException的原因:没有持久性:MyClassProxy

时间:2013-05-08 09:00:09

标签: mapping-by-code nhibernate-3

SaveOrUpdate来电中,我收到MappingException No persister for: MyClassProxy

奇怪的是,我能够使用代码插入新行,但如果该行存在且存储库尝试更新它,我将收到此异常。

在搜索并阅读了很多关于此异常的问题之后,这并没有帮助我找到原因,我会问自己:如果映射适用于读取/可能导致此异常的可能原因插入数据?

有关我案例的更多信息:

  • 使用NHibernate版本 3.3.1.4000
  • 映射是按代码(不流利)和另一个 dll 创建的
  • 映射由ClassMappingSubclassMapping与鉴别器
  • 组成

1 个答案:

答案 0 :(得分:1)

我有同样的问题。基本上我实现了一个NHibernate.EmptyInterceptor来支持INotifyPropertyChanged通知。

但我在网上使用的示例错过了一个关键步骤...它没有覆盖GetEntityName方法,因此代理将被转换为'回到实际的对象。

public override string GetEntityName(object entity)
{
    Type type = entity.GetType();
    if (type.FullName.StartsWith("Castle.Proxies") &&
        type.FullName.EndsWith("Proxy"))
    {
        return type.BaseType.FullName;
    }
    return base.GetEntityName(entity);
}

来源回答:Persisting a Castle DynamicProxy that's not associated with a NH Session

注意:使用的示例" Castle.Proxies"我没有使用它并从if块中删除了这个条件