Проблемы с производительностью при перезагрузке объекта - PullRequest
1 голос
/ 04 июля 2019

Мы переключаемся с ObjectContext на DbContext в вашем настольном приложении EF6.На данный момент я борюсь с перезагрузкой данных из БД без воссоздания всего контекста.К сожалению, мы работаем частично с долгосрочным контекстным подходом, который я не могу легко изменить.

Чтобы перезагрузить свойства объекта (без свойств навигации) с новейшими значениями из базы данных (хранилища выигрышей), мыиспользуйте CreateObjectSet() с MergeOption.OverwriteChanges из ObjectContext.Сейчас я пытаюсь заменить его альтернативой DbContext.

Я нашел следующие варианты:

  • DbContext.Entry(entity).Reload()
  • Перезаписать значения каждогосвойство в сущности, используя значения из DbContext.Entry(entity).GetDatabaseValues()
  • Отсоединение сущности и выборка его снова, например, с использованием Find()

Даже при отключении AutoDetectChanges все эти параметры все еще многомедленнее, чем при использовании CreateObjectSet().Кстати, создание нового контекста и повторное извлечение значений тоже будет медленнее, но не намного.

Я что-то упустил или у DbContext нет альтернативы с высокой производительностью (кроме создания нового контекста)для CreateObjectSet() с StoreWins?

...