2013-05-08 62 views
0

SaveOrUpdate調用中我收到MappingException No persister for: MyClassProxyMappingException的原因:沒有persister for:MyClassProxy

奇怪的是,我能夠插入新的行與代碼,但如果該行存在,並存儲庫試圖更新它,我得到這個異常。

在搜索並閱讀了關於此異常的很多問題之後,這並沒有幫助我找到原因,我會問自己:如果映射適用於閱讀,可能有哪些原因會導致此異常/插入數據?

關於我的情況有些瞭解更多信息:

  • 使用NHibernate版本3.3.1.4000
  • 映射是由代碼(不流利)創建,而在另一個DLL所引用
  • 映射由ClassMappingSubclassMapping組成,帶有鑑別器

回答

1

我有同樣的確切問題。基本上我實現了一個NHibernate.EmptyInterceptor來支持INotifyPropertyChanged通知。

但我在線使用的示例錯過了1個關鍵步驟...它沒有重寫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塊

刪除此條件下,例如
相關問題