2011-07-10 2 views
0

私はWCFサービスに来て、その後Fluent NHibernateからdbを問い合わせるクライアントコールを持っています。WCFとNHibernateのトランザクションスコープ

現時点では、WCFはデフォルト(つまり、通話ごと)のままです。

そして、私のコードで私はこのような何か:DbContext以来

using (_repository.DbContext.BeginTransaction()) { 
    try { 
     _repository.SavePerson(object); 
     _repository1.SaveAddress(object1); 
    } catch { 
     _repository.DbContext.RollbackTransaction(); 
     throw; 
    } 
} 

_repository_repository1の両方で同じですが。 _repository1でロールバックする必要がありますか?

また、リポジトリのSaveメソッド以降、セッションオブジェクト がオブジェクトの保存に使用されます。

私が知る必要があるのは、 です。このセッションは、両方のコールで同じですか、それとも2つの違いがありますか? 私はトランザクションスコープ内でそれらを1つの作業単位としてグループ化しているので、それらが同じであると仮定しています。

また、WCFの呼び出しとどのように連携するのですか、WCF側からのトランザクションも処理する必要がありますか?

+0

これは私の答えです。http://stackoverflow.com/a/15451070/168048 – szkra

答えて

0

あなたのコードにアクセスできない人はあなたの質問に答えられません。 NHibernateセッションはWCFによって作成されません。セッションを作成するためのカスタムコードがあります。 r1とr2を同時に実行し、r1だけをロールバックしたい場合は、各セッションでセッションを持つ必要があります。これでr2に触れることなくr1をロールバックできます。

解決策は、セッションファクトリから2番目のセッションを開くことです。

関連する問題