Entity Framework 6: Обновление объекта, когда отслеживание отключено в контексте - PullRequest
0 голосов
/ 10 октября 2018

Я надеюсь, что смогу получить некоторые разъяснения о том, как лучше всего использовать dbcontext с отключенным отслеживанием.Каковы последствия для установки context.Configuration.ProxyCreationEnabled в значение false?

Насколько я понимаю, это эффективно отключит отслеживание сущностей, но что если мне тогда потребуется SaveChanges с этим контекстом?Мне кажется, я помню, как видел способ получить контекст для отслеживания конкретной сущности вручную, но я не могу найти больше информации об этом.Каковы значения производительности для вызова SaveChanges в контексте, в котором отключено создание прокси?

У меня также есть похожие проблемы с использованием запросов без отслеживания.Возможно ли SaveChanges после получения данных с помощью AsNoTracking?

1 Ответ

0 голосов
/ 11 октября 2018

Без ProxyCreationEnabled EF не будет охотно загружать дочерние объекты для вашего объекта без явного «включения» их, и отслеживание изменений также будет отключено.

Если вы используете AsNoTracking, вам придется устанавливать состояния сущностейИзменено в контексте объекта, чтобы сохранить изменения.Вы можете сделать это с помощью кода, подобного следующему:

context.Entry(entity).State = EntityState.Modified;

Вот несколько других SO вопросов, которые углубляются в ваш вопрос.

Каковы недостатки в отключении ProxyCreationEnabledдля CTP5 кода EF сначала

DbSet.Attach (сущность) против DbContext.Entry (сущность) .State = EntityState.Modified

...