Приложение EF4 не видит обновления базы данных - PullRequest
1 голос
/ 26 мая 2011

Когда я запускаю 2 экземпляра моего приложения перед общей базой данных SQL SERVER, я имею следующее поведение: каждый раз, когда объект добавляется или удаляется, другое приложение видит его каждый раз, когда выполняется обновление объекта,другие не видят его, пока я не закрою и не открою приложение

Я работаю с привязками WPF и EF4 Любая подсказка?спасибо, Джон

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Я думаю, что вы повторно используете контекст, не так ли? EF не будет загружать изменения автоматически. Если вы выполните запрос, затем измените данные в базе данных, а затем снова выполните тот же запрос, вы получите тот же результат, что и в первом запросе, будут добавлены только новые записи. Вот как EF ведет себя , и это поведение очень важно в инструментах ORM. Если вы хотите заставить контекст перезагружать данные и отбрасывать состояние, которое у вас есть в приложении (= все несохраненные изменения будут потеряны), вы должны выполнить запрос с MergeOption.OverwriteChanges ( пример здесь ) или вызовом Refresh метод с RefreshMode.StoreWins.

0 голосов
/ 26 мая 2011

Ваше приложение поддерживает состояние, то есть копию данных в памяти.

Когда вы изменяете данные в одном экземпляре приложения и сохраняете данные в базе данных, это не влияет напамять во втором экземпляре приложения.

Чтобы он отображался во втором экземпляре, необходимо получить данные из базы данных.

Я думаю, что вы делаете, это обновлениеданные.Что EF делает, так это говорит: «У меня есть эти 5 строк, есть ли какие-либо изменения в этих данных на сервере».Это только обновление строк, которые были получены ранее.

Вам нужно использовать код, который вы используете для загрузки данных при запуске приложения.Вы также должны быть осторожны, если вы повторно используете dbContext.

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