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