Платформа объекта ADO.NET ObjectContext - кэширующийся вопрос

Я задавался вопросом, было ли мудро кэшировать Платформу Объекта объект ObjectContext в Кэше; это даст мне проблемы с многочисленными связями в то же самое время, когда пользователь испытает проблемы с этим?

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

6
задан casperOne 13 August 2010 в 21:08
поделиться

2 ответа

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

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

6
ответ дан 9 December 2019 в 22:34
поделиться

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

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

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

5
ответ дан 9 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: