2012-03-15 5 views
1

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의 구현에

답변

0
+1

딱! 나중에 참조 할 키는 (a) NHibernate.EmptyInterceptor (또는 IInterceptor 구현)를 서브 클래 싱하여 (b) GetEntityName()을 재정의하여 프록시 대신 적절한 유형을 반환하고 (c) 사용자 정의를 설정하여 사용자 정의 인터셉터를 작성하는 것입니다. 인터셉터를 NHibernate.Cfg.Configuration을 만들 때. – rtorres

관련 문제