我有Tasks
表:Id (PK), TaskName, Status
状态是以下之一:Queued,Busy,Complete。
我想使用多个线程来处理任务,为此我需要能够在一个操作中完成:
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
来做到这一点 - 但我想确定没有更好的方法。
我知道这是一个非常基本的问题,但我无法找到明确的答案。