Контекст синхронизации EntityFramework с базой данных Sql Server - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я занимаюсь разработкой многопользовательского wpf-приложения.Прежде всего, я хочу дать вам краткий обзор системы.Каждый клиент загружает полные данные из базы данных сервера SQL.Каждый клиент может создавать и изменять данные, которые ему принадлежат.Данные от других клиентов не могут быть изменены.Теперь я хочу синхронизировать мой (долгоживущий -> контекст живет до тех пор, пока работает MainWindow) dbcontext. Это означает, что когда другие клиенты записывают / обновляют данные в базе данных, эти данные должны быть синхронизированы с каждым dbcontext, что означает, что каждый клиент можетпросматривать данные всех других клиентов, но не разрешается изменять / удалять их (каждая запись содержит поле пользователя)

Теперь большой вопрос: как мне добиться синхронизации долгоживущего dbcontext?Есть ли какой-либо механизм синхронизации (я нашел Microsoft Sync Framework, но я думаю, что это решение не подходит для моей проблемы.) Я ищу метод для синхронизации полного dbcontext (все объекты).Нужно ли мне писать свою собственную синхронизацию, например, опросить базу данных?

Хорошо, я нашел способ обновить все сущности, которые были загружены первыми внутри контекста db, используя следующие строки кода:

 var refreshableObjects = Remoting.Context.ChangeTracker.Entries().Select(c => c.Entity).ToList();
        Remoting.Context.ObjectContext.Refresh(System.Data.Entity.Core.Objects.RefreshMode.StoreWins, refreshableObjects);

Теперь это только обновляет уже существующие сущности.Другое дело, как я могу получить все новые добавленные записи в базе данных и добавить их в свой контекст.Есть ли способ повторно выполнить мой запрос linq и объединить результаты?

Я использую код Entityframework первый подход.

Спасибо, Мани

...