何かが失敗した場合にすべての変更をロールバックできるように、 1 つのトランザクションで 2 つの異なる SQL Azure フェデレーション データベースに保存する必要があります。現在、互いに独立して処理している 2 つの別個のコード ブロックがあります。TransactionScope を使ってみたのですが、どうやら SQL Azure ではサポートされていないようです。
using (EVENTContext dc = new EVENTContext(
GetConnectionString(1)))
{
string federationCmdText = @"USE FEDERATION [fed] ([dist] = '"+ GetDist(1) +"') WITH FILTERING = OFF, RESET";
((IObjectContextAdapter)dc).ObjectContext.Connection.Open();
dc.Database.ExecuteSqlCommand(federationCmdText);
dc.EVENTS.Add(e);
dc.SaveChanges();
}
using (EVENTContext dc = new EVENTContext(
GetConnectionString(2)))
{
string federationCmdText = @"USE FEDERATION [fed] ([dist] = '"+ GetDist(2) +"') WITH FILTERING = OFF, RESET";
((IObjectContextAdapter)dc).ObjectContext.Connection.Open();
dc.Database.ExecuteSqlCommand(federationCmdText);
dc.EVENTS.Add(e2);
dc.SaveChanges();
}
単一のトランザクションで複数のデータベースに保存するにはどうすればよいですか? 最近 Unit of Work について読み始めましたが、それが必要かどうかはわかりません。