2013-05-08 5 views
0

В сообщении SaveOrUpdate я получаю MappingException No persister for: MyClassProxy.Причина для MappingException: Не требуется для: MyClassProxy

Что странно, что я могу вставить новые строки с кодом, но если эта строка существует и репозиторий пытается ее обновить, я получаю это исключение.

После поиска и чтения множества вопросов об этом исключении, это не помогло мне найти причину этого, я спрошу себя: какие возможные причины могут привести к этому исключению, если отображение работает для чтения/вставка данных?

Некоторые больше информации о моем случае:

  • с использованием NHibernate версии 3.3.1.4000
  • отображение создается кодом (не свободно), а в другом DLL, на который ссылается
  • отображение состоит из ClassMapping и SubclassMapping с дискриминатором

ответ

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» Я не использовал это и удалил это условие из блока, если

 Смежные вопросы

  • Нет связанных вопросов^_^