Поддержание состояния и контекста данных между запросами - PullRequest
1 голос
/ 17 июня 2010

У меня есть веб-приложение EF4 / ASP.NET, структурированное для использования POCO и универсальных репозиториев, основанное, в основном, на этой превосходной статье .

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

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

Мое решение состоит в том, чтобы разделить контекст между публикациями, создав одну модель представления, которая включает все необходимые репозитории (инициализированные для совместного использования в одном контексте), а также любые связанные данные и сохранить эту модель в переменной Session, получаемой из Sessionна последующих страницах запросов.Поэтому поддержание одного и того же контекста во всех сообщениях до тех пор, пока профиль не будет сохранен.

Это работает нормально, НО меня беспокоит, что я на самом деле не знаю точно, что хранится в переменной сеанса модели или, что более важно, размерПеременная сеанса.

Итак, я полагаю, два вопроса: во-первых, я должен искать лучшее решение для обработки общего контекста по всем сообщениям (любые предложения приветствуются)?А во-вторых, что на самом деле хранится в сеансе, когда он включает в себя хранилище плюс контекст?

1 Ответ

1 голос
/ 10 июля 2010

Рик Страл (Rick Strahl) рассмотрел очень похожую тему с использованием Linq 2 SQL еще в начале 2008 года.

http://www.west -wind.com / блог / сообщений / 246222.aspx

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

Я нахожусь с вами в таком же положении, поэтому я наткнулся на этот пост.

Интересно, можно ли просто создать экземпляры репозиториев, где это необходимо, и позволить серверу sql управлять пулом соединений (если, конечно, вы используете сервер sql)

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