У меня есть Tasks
таблица: Id (PK), TaskName, Status
Состояние одно из: В очереди , Занято , Завершено .
Я хочуиспользовать несколько потоков для обработки задач, и для этого мне нужно выполнить одну операцию:
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
- но я хочу быть уверенным, что лучшего способа не существует.
Я знаю, что это очень простой вопрос, но я не смог найти однозначного ответа на этот вопрос.