Мне нужен совет, как мы можем отделить зависимости nHibernate на уровне представления. В настоящее время у нас есть трехуровневое приложение winforms C #, состоящее (упрощенное) из следующих слоев:
- Пользовательский интерфейс (UI)
- Бизнес-логика (БАЛ)
- Логика доступа к данным (DAL)
Мы переносим это приложение в ORM (nHibernate) и в идеале хотели бы иметь только DAL, ссылающийся на nHibernate. Мы также хотим использовать функциональность «Единица работы», которая включена в nHibernate, применяя методологию «Сеанс на разговор».
Чтобы добиться этого, нам нужно создать и открыть сеанс в пользовательском интерфейсе, передать сеанс через BAL в DAL, однако мы не сможем этого достичь, не создав зависимости nHibernate как в BAL, так и в DAL.
Любой совет будет оценен. Как мы должны структурировать архитектуру, чтобы избежать любых ссылок на nHibernate в пользовательском интерфейсе и BAL. Есть идеи?
Я также должен добавить, что мы не хотим, чтобы пользовательский интерфейс также имел ссылку на DAL.
UI => BAL => DAL