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