Предположим, у меня есть таблица Orders в моей базе данных и соответствующий класс модели, сгенерированный конструктором VS2008 "Linq to SQL Classes". Предположим, у меня также есть хранимая процедура (ProcessOrder
) в моей базе данных, которую я использую для обработки записи заказа.
Если я сделаю следующее:
var order = dataContext.Orders.Where(o => o.id == orderId).First();
// More code here
dataContext.ProcessOrder(orderId);
order.Status = "PROCESSED";
dataContext.SubmitChanges();
... тогда я получу нарушение параллелизма, если хранимый процесс ProcessOrder
изменил порядок (что, конечно, очень вероятно), потому что L2S обнаружит, что запись заказа изменилась, и не сможет отправить изменения в этом порядке.
Это все довольно логично, но что если я захочу обновить запись заказа после вызова сохраненного процесса? Как мне сказать L2S забыть о своей кэшированной копии и обновить ее из БД?