Я использую Entity Framework 6, где по соображениям производительности я загружаю свои сущности в свой DbContext
сразу, а затем использую их локально.До сих пор все изменения в базе данных проходили через DbContext
, поэтому мои локальные объекты и база данных были синхронизированы.Однако теперь мне нужно вызвать хранимую процедуру в базе данных, что имеет побочные эффекты от внесения изменений в таблицы (вне DbContext), которые должны быть отражены в моих объектах.Под изменениями я имею в виду добавление новых записей и удаление / обновление существующих записей.
Я не хочу избавляться от моего DbContext
и создавать новый, так как некоторые экземпляры сущностей заключены в ViewModel
классы.Таким образом, удаление DbContext
таким образом приведет к серьезным проблемам в пользовательском интерфейсе.
Насколько я понимаю, простой вызов Load()
для всех моих DbSets
из DbContext
просто заменитсуществующие экземпляры.Поэтому любые объекты, использующие старые экземпляры сущностей, не будут работать
Итак, я подумал, что мог бы использовать метод Reload
, такой как:
context.Entry(entity).Reload();
, который обновит мои локальные сущности, но я могу сделать это только для сущностей, которые DbContext
уже знает о.Он не распространяется на НОВЫЕ сущности или УДАЛЕННЫЕ сущности, которые были созданы / удалены в результате выполнения хранимой процедуры.
Итак, я ищу способ:
- Загрузка из базы данных сущностей, которые НОВЫЕ для моего
DbContext
- Перезагрузка существующих сущностей в моем
DbContext
- Удаление всех удаленных сущностей из моего
DbContext
Может ли кто-нибудь предложить какую-либо помощь в этом, пожалуйста?
Большое спасибо заранее.