Entity Framework 5を使用しており、1つのトランザクションで複数のストアドプロシージャ呼び出しを行う必要があります。それらはすべて挿入物であり、それぞれが前のものの出力に依存しており、1つが失敗した場合にすべてをロールバックできるようにしたいと思います。各呼び出しは同じエンティティオブジェクトを使用します。最初の呼び出しは正常に実行されますが、次の呼び出しは常に次のエラーで失敗します。
基になるプロバイダーがOpenで失敗しました。」
内部例外:「分散トランザクションマネージャー(MSDTC)のネットワークアクセスが無効になっています。コンポーネントサービス管理ツールを使用して、MSDTCのセキュリティ構成でネットワークアクセスのDTCを有効にしてください。」
内部内部例外:「トランザクションマネージャーがリモート/ネットワークトランザクションのサポートを無効にしました。(HRESULTからの例外:0x8004D024)」
DTCの道を進むことなくこれを行う方法はありますか?
コード:
ObjectParameter outputParam1 = new ObjectParameter("newEntity1", 0);
ObjectParameter outputParam2 = new ObjectParameter("newEntity2", 0);
using (var scope = new TransactionScope())
{
try
{
using(var context = new DatabaseContext())
{
context.f_createEntity1(outputParam1);
}
using(var context = new DatabaseContext())
{
context.f_createEntity2(ouputParam2, outputParam1.Value);
}
... other calls ...
scope.Complete();
}
catch (Exception ex)
{
... handle error ...
}
}