Мы переключаемся с ObjectContext на DbContext в вашем настольном приложении EF6.На данный момент я борюсь с перезагрузкой данных из БД без воссоздания всего контекста.К сожалению, мы работаем частично с долгосрочным контекстным подходом, который я не могу легко изменить.
Чтобы перезагрузить свойства объекта (без свойств навигации) с новейшими значениями из базы данных (хранилища выигрышей), мыиспользуйте CreateObjectSet()
с MergeOption.OverwriteChanges
из ObjectContext
.Сейчас я пытаюсь заменить его альтернативой DbContext
.
Я нашел следующие варианты:
DbContext.Entry(entity).Reload()
- Перезаписать значения каждогосвойство в сущности, используя значения из
DbContext.Entry(entity).GetDatabaseValues()
- Отсоединение сущности и выборка его снова, например, с использованием
Find()
Даже при отключении AutoDetectChanges
все эти параметры все еще многомедленнее, чем при использовании CreateObjectSet()
.Кстати, создание нового контекста и повторное извлечение значений тоже будет медленнее, но не намного.
Я что-то упустил или у DbContext
нет альтернативы с высокой производительностью (кроме создания нового контекста)для CreateObjectSet()
с StoreWins
?