Entity Framework(私の場合は最初にコード)を使用して、SaveChangesを呼び出してDB内の1つのオブジェクトを更新してから、もう一度SaveChangesを呼び出して別のオブジェクトを更新する必要がある操作があります。(EFが最初に更新するオブジェクトを特定できない問題を解決するには、最初のSaveChangesが必要です)。
私はやってみました:
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
SaveChanges
これを実行すると、2回目の呼び出しで、「基になるプロバイダーがオープンに失敗しました」という例外が発生します。内部例外は、MSDTCが私のマシンで有効になっていないことを示しています。
さて、MSDTCを有効にする方法を説明する投稿を他の場所で見ましたが、ネットワークアクセスなども有効にする必要があるようです。他のサーバーはもちろん、他のデータベースが関与していないため、これは完全にやり過ぎのようです。アプリケーション全体の安全性を低下させる(または遅くする)ようなことはしたくありません。
確かに、これを行うためのより軽量な方法が必要です(理想的にはMSDTCなしで)?!