ASP.NET MVC сохраняет сеанс Entity - PullRequest
0 голосов
/ 21 декабря 2009

Я некоторое время работал с платформой управления сущностями и ASP MVC. Я сохранил объект сущности в HttpContext.Current.Session, чтобы всегда использовать один и тот же сеанс. Теперь я столкнулся с некоторыми проблемами, и мне интересно, могла ли это быть плохая идея, и если да, то как мне поступить иначе.

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

Ответы [ 3 ]

3 голосов
/ 21 декабря 2009

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

В этой статье MS рассматриваются различные варианты управления состоянием, включая сеанс и приложение:

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

Кэширование немного отличается тем, что позволяет выполнять такие действия, как установка срока действия. Если вам не нужна такая функциональность, я бы рекомендовал придерживаться состояния приложения. Статья по кешированию от MS:

http://msdn.microsoft.com/en-us/library/6hbbsfk6(VS.71).aspx

2 голосов
/ 21 декабря 2009

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

Проверьте этот Совет , чтобы узнать, как кэшировать данные между запросами / пользователями / сессиями и т. Д.

Надеюсь, это поможет

Alex

1 голос
/ 25 декабря 2009

По книге вы бы хотели, чтобы контекст вашего объекта существовал в кратчайшие сроки.

чтобы создать контекст, получить некоторые данные и вернуть свое представление клиенту.

и избавься от всего.

Запустите кеширование, когда ваша БД не сможет справиться с вашей нагрузкой.

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