Как избежать выставления уровня домена на уровне инфраструктуры с конфигурацией FluentNHibernate? - PullRequest
0 голосов
/ 27 февраля 2010

У меня есть класс NHibernateUtil на уровне инфраструктуры моего приложения, однако у меня возникает проблема с этой строкой:

...
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Computer>());

Чтобы это работало, я должен выставить уровень домена на уровень инфраструктуры. Уровень домена также имеет доступ к уровню инфраструктуры благодаря сопоставлениям (например, ComputerMapping), и это вызывает циклическую зависимость.

Как можно настроить FluentNHibernate на доступ к правильной сборке, не предоставляя инфраструктурному уровню доступ к уровню домена?

1 Ответ

1 голос
/ 27 февраля 2010

Я не понимаю, почему вам нужно ссылаться на уровень инфраструктуры внутри уровня вашего домена. Обычно вы должны структурировать это так:

  • Домен, содержащий доменные классы и интерфейсы, которые определяют операции над этими классами

  • Уровень доступа к данным, ссылающийся на уровень домена и реализующий интерфейсы для данного поставщика (например, SQL и NHibernate). Здесь вы разместите классы отображения nhibernate и конфигурацию, позволяющую вам создать ISessionFactory, используемый при реализации интерфейсов. Вы только выставляете реализацию этих интерфейсов, все остальное приватно.

  • Основное приложение, ссылающееся на предыдущие два слоя. Здесь вы можете использовать контейнер объектов для выбора правильной реализации интерфейсов домена.

Если позже вы решите использовать какую-то другую технологию для доступа к вашим данным, например, Entity Framework, вам нужно написать другой слой доступа к данным с другой реализацией интерфейсов домена и подключить его к основному приложению, изменив только объект код контейнера (DI).

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