2012-03-15 12 views
1

私はSpring.NET AOPを使用して、C#永続オブジェクトがそのプロパティ(Spring.NET/examplesのSpring.AopQuickStart.Step6.2010) )が、私はMappingExceptionを取得しています - のために何存続:DecoratorAopProxy_8aa4d47e877a48b4828bf7a6a51bbedfSpring.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(); 
} 

NHibernateのセッションの保存に渡されたオブジェクトのGetTypeが "DecoratorAopProxy"であり、NHibernateをスローするPersonではないという問題があると思います。

どうすればこの問題を解決できますか? DataBindingIntercepter.csの実装で

答えて

0
+1

パーフェクト! (a)NHibernate.EmptyInterceptorのサブクラス化(またはIInterceptorの実装)、(b)GetEntityName()をオーバーライドしてプロキシの代わりに適切な型を返す、(c)カスタムを設定することによってカスタムインターセプタを作成することです。 NHibernate.Cfg.Configurationを作成するときのインターセプタ。 – rtorres

関連する問題