Как правильно использовать DataContext.Refresh ()? - PullRequest
8 голосов
/ 06 июня 2011

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

myDataContext.Refresh(RefreshMode.KeepCurrentValues, myObj);

но, к сожалению, это, кажется, не имеет никакого эффекта; значения на myObj остаются неизменными даже при изменении значений БД. Документация MSDN по этому методу довольно скудная. Может кто-нибудь сказать мне, что мне здесь не хватает?

Ответы [ 2 ]

13 голосов
/ 06 июня 2011

Если вы хотите, чтобы текущие значения вашего обновленного объекта соответствовали текущим значениям в базе данных, вам нужно вместо этого использовать режим RefreshMode.OverwriteCurrentValues.

3 голосов
/ 06 июня 2011

Если вы хотите «обновить» вашу сущность с помощью актуальных значений, тогда соответствующий режим будет RefreshMode.KeepChanges или RefreshMode.OverwriteCurrentValues.

KeepChanges оставит любое локально измененное значение как есть. OverwriteCurrentValues извлечет все значения из базы данных.

Остерегайтесь ChangeConflictException с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...