Как обновить / синхронизировать DbContext после внешних изменений в базе данных
===============================================================================

 Я использую Entity Framework 6, где по соображениям производительности я загружаю свои сущности в мой `DbContext` , а затем использую их локально. До сих пор все изменения в базе данных проходили через `DbContext` поэтому мои локальные объекты и база данных были синхронизированы. Однако теперь мне нужно вызвать хранимую процедуру в базе данных, что имеет побочные эффекты от внесения изменений в таблицы (вне DbContext), которые должны быть отражены в моих объектах. Под изменениями я имею в виду добавление новых записей и удаление / обновление существующих записей. 

 Я не хочу распоряжаться моим `DbContext` и создавать новый, так как некоторые экземпляры сущностей заключены в классы `ViewModel` . Таким образом, удаление `DbContext` таким образом приведет к серьезным проблемам в пользовательском интерфейсе. 

 `DbSets` я понимаю, простой вызов `Load()` для всех моих `DbSets` `DbContext` просто заменит существующие экземпляры. Таким образом, любые объекты, использующие старые экземпляры объектов, не будут работать. 

 Итак, я подумал, что мог бы использовать метод `Reload` как: 

```
context.Entry(entity).Reload();

```
  который обновит мои локальные объекты, но я могу сделать это только для объектов, о которых `DbContext` уже знает. Он не распространяется на НОВЫЕ сущности или УДАЛЕННЫЕ сущности, которые были созданы / удалены в результате выполнения хранимой процедуры. 

 Итак, я ищу способ: 

1. Загрузите из базы данных объекты, которые являются `DbContext` для моего `DbContext`
2. Перезагрузите существующие объекты в моем `DbContext`
3. Удалить все удаленные объекты из моего `DbContext`

 Вот официальная документация для Entity Framework.   
 Начиная с анализа вашей ситуации с базой данных, он предлагает умные и быстрые способы получить то, что вы хотите, детализируя при необходимости стратегии чтения данных (такие как активная или ленивая загрузка) или предоставляя учебные пособия для правильного использования генерации кода и графического интерфейса мастера. 

 <http://www.entityframeworktutorial.net/choosing-development-approach-with-entity-framework.aspx> 

 Вот более подробная информация и учебник по стратегиям чтения данных:   
 <https://www.c-sharpcorner.com/article/eager-loading-lazy-loading-and-explicit-loading-in-entity-framework/> 

 Как я уже говорил вам в комментариях, я бы предложил подход, основанный на базе данных, с отложенной загрузкой, чтобы избежать неконтролируемого поведения данных (или перезагрузки всей базы данных при запуске хранимой процедуры). 

 Говоря о SP, его можно просто отобразить с помощью мастера, который поставляется с Entity Framework и обернут методом. 

 Надеюсь, вы найдете эти ресурсы полезными!