Я работаю над проектом веб-приложения с использованием ASP.NET MVC3 и базы данных в SQL Server. Также существует мобильное приложение, использующее данные из той же базы данных через службы REST. Вот некоторые из слоев моего приложения:
Модель - модель данных ADO.NET с использованием Entity Framework.
Уровень доступа к данным - репозитории с запросами на получение данных из базы данных.
Веб-приложение - проект MVC3, использующий репозитории, слабая связь с использованием карты структуры и DI, контекст базы данных удаляется в конце HttpRequest.
Ядро - еще один уровень между DAL и уровнем обслуживания, использует репозитории и предоставляет данные на уровень обслуживания. Вроде уровня бизнес-логики.
Уровень обслуживания - службы REST, знают о базовом уровне, но не знают о DAL. Сопоставляет данные с DTO и предоставляет клиенту
Проблема, с которой я столкнулся с такой архитектурой приложения, заключается в слабой связи на уровне обслуживания. Уровень обслуживания ссылается на базовый уровень. Базовый уровень имеет ссылку на уровень доступа к данным и использует его репозитории. Однако в репозиториях нет конструктора по умолчанию. Они ожидают 1 параметр и контекст его объекта базы данных (одноразовый объект).
Использование репозиториев прямо на моем сайте не проблема. Я использую карту структуры, и DI делает ее слабо связанной. Каждый контекст удаляется в конце HttpRequest.
Проблема в том, что уровень обслуживания и уровень ядра. Я бы тоже хотел иметь слабую связь, но не знаете, как этого добиться? Как ввести в них контекст данных и убедиться, что они удаляются в определенный момент? Я хотел бы услышать несколько предложений, как все это собрать.