Я использую один экземпляр сценария DbContext
для теневого копирования всей копии базы данных локально в приложении WPF. Я слышал, что это плохая практика, но моя база данных небольшая, и мне нужна полная ее копия во время работы приложения.
Метод расширения для IQueryable
, Load()
позволяет мне предварительно загружать элементы DbSet<>
, чтобы я мог связать вещи со свойством Local DbSet<>
. Данные в базе данных быстро меняются, поэтому я хочу SaveChanges()
и перезагрузить все , даже объекты, которые уже отслеживаются. Повторный вызов метода Load()
не обновляет элементы, которые отслеживаются, но не помечаются как измененные, которые уже загружены.
Каков предпочтительный метод перезагрузки предварительно загруженных элементов в DbSet<>
? Вдобавок ко всему, я могу думать только о том, чтобы вызвать SaveChanges()
, затем просмотреть все записи и установить для отслеживаемых и исходных значений текущие значения в базе данных, а затем Load()
для любых новых объектов, которые могли быть добавлены. В моем сценарии невозможно удалить объекты, но, возможно, мне придется поддерживать удаление элементов в долгосрочной перспективе. Это не кажется правильным, должен быть способ отбросить все и перезагрузить. Казалось бы, проще отказаться от моего контекста и просто начать заново, но все элементы в WPF уже связаны с Local´ObservableCollection<>
, и это только портит интерфейс.