Кэширование сущности EF в кеш ASP.NET - PullRequest
0 голосов
/ 05 октября 2011

У меня есть сайт MVC3 с EF4.1 и шаблоном репозитория / единицы работы, и я создаю новый контекст для каждого запроса http.

Я хочу реализовать пользовательское кэширование объектов в Entity Framework 4.1. Это означает добавление объекта в кэш asp.net для более быстрого поиска другими подобными http-запросами.

Но проблема с EF заключается в том, что эти кэшированные сущности привязаны к контексту, который использовался для извлечения этой сущности в первую очередь и который был удален после того, как закончился запрос http.

Теперь, когда я хочу обновить этот кэшированный объект, он дает мне «Объектный объект не может ссылаться на несколько экземпляров IEntityChangeTracker», что имеет полный смысл.

Какова лучшая практика для реализации кэширования объектов в MVC3 / EF4.1?

Я предполагаю, что вы должны отсоединить сущность от старого контекста при добавлении в кеш и присоединении к новому контексту при извлечении. Но я, конечно, не первый, кто сталкивается с этим или пытается реализовать это!

Есть ли там помощники или библиотеки? (пожалуйста, не указывайте мне http://code.msdn.microsoft.com/EFProviderWrappers/Release/ProjectReleases.aspx?ReleaseId=4747, поскольку это удаляет ВСЕ записи из кэша при любом обновлении таблицы, оказываясь бесполезным).

Спасибо.

1 Ответ

0 голосов
/ 05 октября 2011

«Наилучшая практика», вероятно, будет заключаться в использовании специального класса DTO для хранения в сеансе и отображения в этот класс и из него, когда вам нужно сохранить или загрузить информацию в базу данных.

Тем не менее, вы должны быть в состоянии достичь того, для чего вы собираетесь, просто отсоединив и прикрепив сущность, как вы говорите. Это не должно быть так уж сложно, если вы консолидируете свою логику для добавления и удаления ее из сеанса в один класс.

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