Я ищу несколько советов о правильном механизме использования RavenDB IDocumentSession в моих репозиториях в истинном поведении session-pr-request.
Это новое приложение MVC3, и я получил Ninject / Ninject.MVC3, используя NuGet. RavenDB работает на внешнем сервере (т.е. не встроен).
Я настроил модуль Ninject для возврата правильных репозиториев, а также сеанса для каждого запроса для них.
Однако - правда ли, что MVC3 будет создавать экземпляр контроллера для каждого метода действия? В этом случае я могу просто позволить MVC3 / Ninject вводить мои репозитории и сеансы, в которых они нуждаются, без проблем.
Однако, если контроллер повторно используется в нескольких запросах, это может не сработать, поскольку хранилище, зависшее из предыдущего запроса, теперь может использовать сеанс, который является старым и отброшенным.
Я рассмотрел несколько способов сделать это - приведенный выше является основным. Я также попытался сделать что-то вроде ActionFilterAttribute, который получает новый сеанс из контейнера IoC в начале каждого запроса - но в таком случае, где мне его поместить?
Должен ли мой репозиторий иметь свойство Session, которое он использует, которое фактически каждый раз получает текущий сеанс из контейнера? Это добавило бы связь между реализацией репозитория и контейнером IoC, но, в противном случае, должно работать.
Как правильно это сделать? Как классные дети делают это? Любая помощь будет принята с благодарностью!