Настройка NHibernate для работы с объектами прокси Spring.NET AOP - PullRequest
1 голос
/ 16 марта 2012

Я использую Spring.NET AOP, чтобы определить, когда постоянный объект C # изменил какие-либо свои свойства (в соответствии с Spring.AopQuickStart.Step6.2010 в Spring.NET/examples), но я получаю исключение MappingException - Нет сохранить для: DecoratorAopProxy_8aa4d47e877a48b4828bf7a6a51bbedf

Вот мой код:

var person = Repository.GetById(personId);
var personProxy = GetProxy(person);
// udpate some properties in personProxy - this is where my advisor determines if/what has changed
Repository.Save(personProxy); // exception thrown here

Вот как выглядит GetProxy (согласно примеру AopQuickStart):

private static Person GetProxy(Person target)
{
    var proxyFactory = new Spring.AOP.Framework.ProxyFactory(target);
    proxyFactory.AddAdvisor(new ModificationAdvisor(target.GetType()));
    proxyFactory.AddIntroduction(new IsModifiedAdvisor());
    proxyFactory.ProxyTargetType = true;

    return (Person)proxyFactory.GetProxy();
}

Я думаю, что проблема в том, что GetType для объекта, переданного в сеанс сохранения NHibernate, это "DecoratorAopProxy", а не Person, который сбрасывает NHibernate.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 марта 2012

посмотрите на реализацию DataBindingIntercepter.cs и DataBindingFactory.cs

https://github.com/ayende/Effectus/tree/master/Effectus/Infrastructure

...