Tasks
テーブルがあります: Id (PK), TaskName, Status
Status は次のいずれかです: Queued、Busy、Complete。
複数のスレッドを使用してタスクを処理したいので、1 回の操作で実行できるようにする必要があります。
var task = db.Tasks.FirstOrDefault(t=>t.Status == (byte) TaskStatus.Queued);
task.Status = (byte) TaskStatus.Busy;
db.SubmitChanges();
明らかに、操作がアトミックでない場合、同時実行の問題が発生する可能性があります。Linq-to-Sql を使用して上記を行う意図的な方法 (存在する場合) は何ですか?
1) storproc または 2)db.ExecuteCommand("...")
または 3) で競合を処理できることはわかっwith try/catch
ていますが、より良い方法がないことを確認したいと思います。
非常に基本的な質問であることは承知していますが、これに対する明確な答えを見つけることができませんでした。