C# 영속 객체가 언제 Spring.NET /examples에서 Spring.AopQuickStart.Step6.2010에 따라 변경되는지를 확인하기 위해 Spring.NET AOP를 사용하고 있습니다.), 나는 MappingException을 받고하지거야하지만 - 아니 persister을 위해 :Spring.NET AOP 프록시 객체와 동작하도록 NHibernate 설정하기
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();
}
DecoratorAopProxy_8aa4d47e877a48b4828bf7a6a51bbedf
다음
은 내 코드입니다
NHibernate의 세션 저장에 전달 된 객체의 GetType이 "DecoratorAopProxy"이고 NHibernate를 끄는 Person이 아니라는 것이 문제라고 생각합니다.
이 문제를 어떻게 해결할 수 있습니까? DataBindingIntercepter.cs의 구현에
딱! 나중에 참조 할 키는 (a) NHibernate.EmptyInterceptor (또는 IInterceptor 구현)를 서브 클래 싱하여 (b) GetEntityName()을 재정의하여 프록시 대신 적절한 유형을 반환하고 (c) 사용자 정의를 설정하여 사용자 정의 인터셉터를 작성하는 것입니다. 인터셉터를 NHibernate.Cfg.Configuration을 만들 때. – rtorres