さまざまな理由から、UPDATE
を呼び出すときにいくつかのカスタムSQLコマンドを実行できる必要があります。これをアトミックに実行して、通常とSQLの両方が成功するか、どちらも成功しないようにします。SaveChanges
DbContext
SaveChanges
しかし、これを達成する方法はわかりません。私がこれまでに試したことは、これとさまざまなバリエーションです。
ここでのエラーは(ExecuteSqlCommand
通話中)です:
ExecuteNonQueryでは、コマンドに割り当てられた接続が保留中のローカルトランザクションにある場合、コマンドにトランザクションが必要です。
さて、十分に公平です。ただし、トランザクションを受け入れるオーバーロードはExecuteSqlCommand
ありません。そこで、Dapperパッケージをインストールし、問題のある行をこのDapper呼び出しに置き換えて、トランザクションを渡します。
this.Database.Connection
.Execute("insert into Tests (Foo, Bar) values ('test', 2)",
transaction: tran);
しかし今、エラーが発生しbase.SaveChanges()
、それは私に次のことを与えます:
SqlConnectionは並列トランザクションをサポートしていません。
SaveChanges
それで、データコンテキストの接続ですでにトランザクションを作成したとしても、明らかに常に新しいトランザクションを作成しますか?
やりたいことを成し遂げる方法はありますか?
私はEntityFramework5.0コードファーストを使用しています。