Web Apiを呼び出す方法があります。データが複数のテーブルに挿入されるため、トランザクションが追加されます。以下はコードのレイアウトです。複数のメソッド呼び出しとネットワーク呼び出しにまたがるトランザクションを管理する
{
TransactionObject objTransaction = new TransactionObject();
try
{
//Create Order
order.insert(objTransaction);
//Create Delivery
address.insert(objTransaction);
//Call Generic Web API method to calculate TAX.
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:85766/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/Tax/UpdateTax", order).Result;
if (response.IsSuccessStatusCode)
{
//Commit transactio
objTransaction.EndTransaction(true);
}
else
{
//Commit transactio
objTransaction.EndTransaction(false);
}
}
}
}
catch(Exception ex)
{
//Commit transactio
objTransaction.EndTransaction(false);
}
このメソッドは、別のデータベース操作を実行するためにWeb APIを呼び出します。ウェブの下にあるApiは、フォームの複数の場所と呼ばれる一般的な方法です。
Web APIが呼び出される前に例外が発生すると、すべてのトランザクションがロールバックされます。それは結構です。 Web Apiで例外が発生した場合と同じです。
、それをどのように処理するか、mainメソッドでは、トランザクションをコミット中のWeb APIは、正常に実行されます後に例外が発生する場合は、私はコード
if (response.IsSuccessStatusCode)
{
//Commit transactio
objTransaction.EndTransaction(true);
}
の下での意味は、ロジックを処理するために、任意のより良い方法はありますか?
['TransactionScope'] (https://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.110).aspx)をアンビエントトランザクションオプションで使用します。 – kayess
@kayess:大域トランザクションオプションは、ネットワーク通話では機能しません。私は、ネットワーク上でトランザクションidを流す答えを掲示しました。お持ちの場合は、フィードバックをお願いします。 –