これまでに成功していないAzure SQL DBに対してWCFトランザクションを作成しようとしています。ここで は一例です:Azure SQL DBに対するWCFトランザクション
このようにupdateData()の実装が見えusing (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
ServiceReference1.Service1Client proxy1 = new ServiceReference1.Service1Client();
proxy1.UpdateData();
ServiceReference2.Service1Client proxy2 = new ServiceReference2.Service1Client();
proxy2.UpdateData();
ts.Complete();
}
catch (Exception ex)
{
ts.Dispose();
}
}
:
[OperationBehavior(TransactionScopeRequired = true)]
public void UpdateData()
{
SqlConnection objConnection = new SqlConnection(strConnection);
objConnection.Open();
SqlCommand objCommand = new SqlCommand("INSERT INTO[Security].[Tenants] VALUES(3, 'test', '2016-04-14 14:20:00", objConnection);
objCommand.ExecuteNonQuery();
objConnection.Close();
}
何が起こることはconnection.Open(オン)例外がスローされます。 オブジェクト参照のインスタンスに設定されていません(トランザクションスコープなしで、または同じサービス内のトランザクションスコープ内でこれを実行しようとすると、正常に実行されます)。この問題は、WCFトランザクションで実行しようとする場合にのみ発生します。
良好になり、完全な例外を転記:
SQLアズールに分散トランザクションのための唯一のサポートは、.NET 4.6.1の一部として導入されたサポートと、新しい、SQLネイティブ弾性トランザクションでありますアイディア。また、両方ともIDisposableを実装するSqlConnectionとSqlCommand b/cの両方に対してusingステートメントを実装する必要があります。 – Wjdavis5
これは概念実証プロジェクトの証明です。そのため、using節が欠落しています。 –