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