Есть ли в Entity Framework какое-то контекстное кэширование? - PullRequest
3 голосов
/ 15 апреля 2011

У нас есть два веб-приложения, каждое из которых создает собственный контекст данных для EF.Когда я делаю изменения в сущности в одном приложении, я вижу изменения на странице и в базе данных при просмотре данных в SQL Server Mangement Studio.Однако я не сразу вижу изменения в другом приложении.

Оба приложения используют внедрение зависимостей, и оба приложения используют один и тот же бизнес-уровень и уровень данных.Таким образом, пользовательский интерфейс в обоих приложениях проходит через общий класс контроллеров (не путать с контроллерами MVC), а контроллер проходит через хранилище для объекта, который он извлекает.Поскольку они представляют собой разные приложения, у каждого из них есть свой экземпляр контекста данных структуры сущностей.

Если есть какое-то кэширование, как я могу отключить это?*

РЕДАКТИРОВАТЬ - Может быть, кеширование происходит где-то выше EF?Очистка кэша моего браузера, похоже, не решает проблему.Через некоторое время я неожиданно увижу обновление записи в другом приложении, но какое-то время никакое обновление не покажет мне обновления.

Ответы [ 2 ]

7 голосов
/ 15 апреля 2011

Если кэширование происходит в контексте, кэшированные значения должны исчезнуть, когда вы избавляетесь от контекста в конце текущего HTTP-запроса.У вас есть контекст для каждого запроса, верно?

Вот некоторые лучшие практики времени жизни контекста .

2 голосов
/ 15 апреля 2011

Да, контексты кэшируют свои результаты.

Вы должны создавать новый контекст с каждым запросом (или реализовывать что-то вроде Session-per-request ) в NHibernate *

...