Ответ 1
Возможно, вам стоит подумать об использовании EF в вашем приложении. EF-контекст должен использоваться как можно более короткий промежуток времени:
- Создать контекст
- Загрузка данных
- Изменить данные
- Сохранить данные
- Падение контекста
Из-за внутренней реализации (IdentityMap, UnitOfWork) длительный жизненный контекст не является хорошим выбором и с коротким жизненным контекстом вы вообще не хотите, чтобы упомянутое поведение вообще не было. Даже в настольном приложении вы должны использовать подход, такой как контекст для каждой формы. Вы загружаете данные, представляете данные своему пользователю, и до этого времени только пользователь может изменять данные и нажимать кнопку "Сохранить" - ответственность за работу с concurrency связана с ответственностью за приложение concurrency (timestamp). Автоматическая модификация данных, которые являются частью рабочей единицы работы, - довольно плохая идея - что, если пользователь уже изменил данные? Вы перезапишите его изменения?
Edit:
Вы можете узнать больше о impelementation ObjectContext
здесь.
Я могу представить сценарии, в которых требуется уведомление об обновлении данных для клиентских приложений. Это может быть отображение данных реального времени только для чтения - например, информация о торговле акциями. Но в таком случае вам нужно что-то более мощное. Это не сценарий клиентского вызова ORM для получения данных, а сценарий для подписчика клиента на какой-либо сервисный/средний уровень, который обрабатывает поиск данных и быстрое уведомление об изменении.
Для простых сценариев, где вам нужно только обновить данные в режиме полу реального времени, вы можете использовать опрос - ваш клиент снова вызовет запрос в течение нескольких секунд и будет использовать StoreWins. Любая стратегия уведомления выходит за рамки EF - вы должны реализовать ее как триггер, зависимость sql, опубликовать шаблон подписки или что-то еще. Даже с уведомлением вы сможете обрабатывать какое-либо событие и запрашивать данные.
Опять же, если вы хотите сократить передачу данных с помощью опроса, вам понадобится некоторый уровень обслуживания/среднего уровня, который обеспечит некоторый уровень кэширования (вы также можете попробовать службы данных WCF).