ADO.NET Entity Framework ObjectContext - вопрос кеширования - PullRequest
6 голосов
/ 09 февраля 2010

Мне было интересно, было ли разумно кэшировать объект ObjectContext Entity Framework в Cache; это вызовет у меня проблемы с несколькими подключениями одновременно, что у пользователя возникнут проблемы с этим?

Я получил ошибки, такие как: «соединение в настоящее время закрыто», и мне было интересно, было ли это связано с несколькими пользователями и кэшированием ObjectContext, или это было связано, например, с повторным нажатием кнопки обновления или остановки страницы и быстрого выполнения чего-то другого (что-то, что мы сделали, чтобы получить ошибку).

Ответы [ 2 ]

6 голосов
/ 10 февраля 2010

Я согласен с выше. Однако я кеширую контекст объекта в коллекции HttpContext.Current.Items без каких-либо проблем. Также хорошо читать:

http://dotnetslackers.com/articles/ado_net/managing-entity-framework-objectcontext-lifespan-and-scope-in-n-layered-asp-net-applications.aspx

5 голосов
/ 09 февраля 2010

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

Если у вас нет активных сущностей, тогда нет реальной необходимости кэшировать ObjectContext. В EFv1 работа с отключенными объектами была в лучшем случае проблематичной, поэтому я бы не кэшировал или ждал Entity Framework v4, который позволяет более управляемые объекты (объекты самоконтроля, объекты POCO и т. Д.).

Просто подумал, что я бы добавил один последний момент - несколько потоков - тоже может быть проблематично Apply Changes попытается зафиксировать все изменения, отслеживаемые ObjectContext. Если несколько пользователей используют один и тот же контекст ... ну, надеюсь, вы увидите проблемы ..

...