如何使用FluentNHibernate配置避免将域层暴露给基础架构层?

时间:2010-02-27 17:17:34

标签: fluent-nhibernate

我的应用程序的基础结构层中有我的NHibernateUtil类,但是我遇到了这个问题:

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

为此,我必须将域层公开给基础架构层。由于映射(例如ComputerMapping),域层也可以访问基础结构层,这会导致循环依赖。

如何配置FluentNHibernate访问正确的程序集而不给基础结构层访问域层?

1 个答案:

答案 0 :(得分:1)

我不明白为什么需要引用域层内的基础架构层。通常你应该像这样构造它:

  • 包含定义对这些类的操作的域类和接口的域

  • 数据访问层引用域层并实现给定提供程序的接口(例如SQL qith NHibernate)。在这里,您可以使用流畅的nhibernate映射类和配置,允许您构造在接口实现中使用的ISessionFactory。您只公开这些接口的实现,其他一切都是私有的。

  • 引用前两层的主要应用程序。在这里,您可以使用对象容器来选择域接口的正确实现。

如果稍后您决定使用其他技术访问您的数据(例如Entity Framework),您需要编写另一个具有不同域接口实现的数据访问层,并通过仅修改对象将其插入主应用程序中容器(DI)代码。