Как я заставляю Linq-SQL обновлять его локальную копию записи базы данных?

Предположим, что у меня есть таблица Orders в моей базе данных и соответствующем образцовом классе, сгенерированном VS2008 "Linq разработчику" Классов SQL. Предположим, что у меня также есть хранимая процедура (ProcessOrder) в моей базе данных, которую я использую, чтобы сделать некоторую обработку на записи порядка.

Если я делаю следующее:

var order = dataContext.Orders.Where(o => o.id == orderId).First();

// More code here

dataContext.ProcessOrder(orderId);

order.Status = "PROCESSED";

dataContext.SubmitChanges();

... затем я получу нарушение параллелизма если ProcessOrder сохраненный proc изменил порядок (который, конечно, вероятен), потому что L2S обнаружит, что запись порядка изменилась и не отправит изменения в том порядке.

Это все довольно логично, но что, если я хочу обновить запись порядка после вызова сохраненного proc? Как я говорю L2S забывать о его кэшируемой копии и обновлять его от DB?

6
задан Gary McGill 7 April 2010 в 13:37
поделиться

1 ответ

Вы можете сделать это с помощью метода Refresh в контексте данных, например:

DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues,
                    DataContext.Orders);
16
ответ дан 8 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: