Entity Framework отключить кеширование - PullRequest
2 голосов
/ 15 сентября 2011

Я пытаюсь выяснить, как отключить кэширование DbContext с помощью шаблона хранилища. Прямо сейчас мои представления и функции CRUD используют один и тот же контекст, поэтому размещение .AsNoTracking () в DbSet не работает, потому что обновление данных происходит не так, как раньше.

_context.Entry(e).State = e.Id == 0 ? EntityState.Added : EntityState.Modified;

_context.SaveChanges();

Может ли кто-нибудь объяснить кеширование в EntityFramework, чтобы я мог предоставить динамическую функциональность, в которой, если пользователь обновляет запись, а затем щелкает ссылку для просмотра других данных, то данные, представленные в новой сетке, принимают изменение, предыдущее действие контроллера ... надеюсь, что с тех пор.

Просмотр заказов -> Обновить заказ -> Сохранить заказ -> Просмотр пользователей -> Просмотр правильно показывает совокупность элементов, основанную на изменениях заказа.

1 Ответ

1 голос
/ 15 сентября 2011

Вопрос, который вы задаете, не очень прост.то, что вы будете делать, зависит от того, какой тип сущностей вы используете, так как вы, вероятно, знаете, что есть несколько общих опций - сущности EF, сущности с само отслеживанием, POCO без прокси, POCO с прокси, в зависимости от того, что у вас есть, либо

1) подключите объект, вызовите Load для свойства навигации объекта

2) повторно подключите объект, вызовите LoadProperty в контексте

3) просто вызовите либо Load / LoadProperty, если контекст остаетсято же самое

То, что вы называете кэшированием, фактически является отслеживанием сущностей, поэтому вы можете отключить его, либо отключив сущности, либо установив MergeOption в MergeOption.NoTracking на ObjectQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...