私はこのような何かを(ClearImportTableとInsertPageはストアドプロシージャです)なコードの部分を持っている:ストアドプロシージャを使用してLINQでトランザクションをSQLに変換する方法を教えてください。
datacontext.ClearImportTable() //Essentially a DELETE FROM table
for (int i = 1; i < MAX_PAGES; ++i){
datacontext.InsertPage(i); //Inserts data into the table
}
は、これは私のコードのやや簡略版ですが、アイデアは、それが挿入する前にテーブルをクリアしていることです記録。唯一の問題は、ClearImportTableの後にエラーが発生した場合、テーブルのすべてのデータが消去されることです。トランザクションにこれをラップする方法はありますか?エラーがあれば、すべてが元の状態に戻されます。例外が発生した場合や使用してブロックがロールバックされて使用してブロック内で行わtransaction.Complete()、その後、すべてを押すことなく残っている場合
using (var transaction = new TransactionScope())
{
// do stuff here...
transaction.Complete();
}
:
MSDTCを使用する必要がありますが、これは必ずしも良い考えではありません。 –
MSDTCは、変換内に複数のlinq datacontextを作成し、それらに対してクエリを実行する場合にのみ必要と考えています。トランザクションスコープ内にdatacontextオブジェクトを1つだけ作成する場合、必須ではありません。 –
MSDTCは、複数のリソースマネージャが関係している場合にのみ必要です。単一のDataContextのみを使用し、単一のSQL Serverインスタンスに接続する限り、軽量トランザクションを使用する必要があります。 – jrista