Как я могу сообщить datacontext, что я обновил запись с помощью хранимой процедуры - PullRequest
2 голосов
/ 30 апреля 2009

У меня есть хранимая процедура для обновления записи, и после ее запуска я использую LinqToSql для удаления записи. Я знаю, что это странно, но я просто хочу проверить, насколько он умный, и понять, как он работает.

Поскольку datacontext кэширует результаты, так что любые изменения через него могут быть записаны, но теперь я использую хранимую процедуру для обновления чего-либо, он не будет знать. Поэтому, когда я пытаюсь удалить его, появляется исключение «Строка не найдена или изменена».

Как я могу сказать тексту данных, что я обновил? Если я смогу, проблема решится.

Ответы [ 2 ]

3 голосов
/ 28 мая 2009

Вы можете использовать метод DataContext Refresh (), передавая перечисление System.Data.Linq.RefreshMode; Вот пример:

NorthWindDataContext context = new NorthwindDataContext();
context.Refresh(RefreshMode.KeepChanges);

Уточнить:
Перечисление http://msdn.microsoft.com/en-us/library/system.data.linq.refreshmode.aspx">RefreshMode имеет 3 значения:

  1. KeepChanges
  2. KeepCurrentValues ​​
  3. OverwriteCurrentValues ​​

Используемая здесь версия (KeepChanges) заставляет метод Refresh сохранять измененное значение и обновлять другие неизмененные значения значением из БД.

0 голосов
/ 30 апреля 2009

Полагаю, я что-то упустил, но если вы знаете, что ваш сохраненный процесс просто удаляет запись, то зачем даже не трогать Linq2Sql после этого? DataContext волшебным образом не узнает об удалении.

...