2011-09-15 19 views
0

私は特定の仕事をするエンティティモデルを持つdllを持っています。私の主なアプリケーションはそのdllを使用していますが、DBと対話するための独自のエンティティモデルもあります。2つの異なるコンテキストに対して1つのトランザクションを使用できますか?

メインアプリケーションで、DLLエンティティのコンテキスト保存をトリガするエンティティを保存すると、両方を単一のトランザクションでラップすることはできますか?

答えて

2

TransactionScopeを使用できます。

ただし、トランザクションはデータベースレベルではなくMSDTCで処理されることに注意してください。

作業単位とリポジトリのパターンを使用して、一連のイベント(単一の作業単位)内の各操作が同じコンテキストを使用するようにすることをお勧めします。一連の操作が終了したら、SaveChangesをDBトランザクションを使用する1回だけ呼び出します。

0

2つのコンテキストが異なります。私は場所を格納する方法を知っているdllにLocation.edmxというエンティティモデルを持っています。 メインアプリケーションでは、アーティファクトを格納する方法を知っているArtifacts.edmxというエンティティモデルがあります。

アーティファクトには場所があります。私は記述し案件エンティティコードで:location.Saveで

public void Save() 
{ 
context1.saveChanges(); 
location.Save() 
} 

()

それはこれらの2つの方法が異なるのDLLにあること

public void Save() 
{ 
context2.saveChanges(); 
} 

注あろう。

私の例では、どのようにtransactionScopeを使用しますか?

関連する問題