【发布时间】:2015-09-16 07:59:27
【问题描述】:
我在 DDD(领域驱动设计)中有一个高度标准化的项目,所以这意味着每一层都有自己的职责,除了自己和领域层之外,没有任何层知道。
这是我的项目的结构:
我的Infra.Data 层负责连接数据库,我正在使用EntityFramework 进行持久化。
我的问题是:为了使它与 SQLServer 数据库一起使用,我需要在我的 WebApplication 层中添加对 EntityFramework.SqlServer 的引用,这打破了我的关注点分离概念,如下所示。
即使在我的Infra.Data 层中具有相同的引用,这只是它应该在的位置,如下所示。
如果我从WebApplication 层中删除EntityFramework.SqlServer 引用,它会停止工作,并且每次我尝试持久化数据时都会抛出异常,如下所示。
我需要知道如何删除此引用以保持关注点分离,因为现在的方式,如果我想改变我的持久性,我将不得不改变我的WebApplication。我的 Web 层甚至被禁止包含任何带有“EntityFramework”这个词的东西。我希望完全分离关注点以更改任何层而不影响其他层。
如果我在我的 Web.config 文件中注册我的<entityFramework> 提供程序,则它仅在我在项目中有EntityFramework.SqlServer 但没有@ 上的EntityFramework.SqlServer 引用时才有效987654336@,它错过了命名空间并抱怨它。
注意:我的项目也成功连接到 MySql 数据库,并且我不需要在我的WebApplication 层中引用 MySql.Data 或任何其他 MySql 库,正如预期的那样。
请帮助我,我的 DDD/关注点分离强迫症正在破解它,谢谢。
【问题讨论】:
标签: sql-server web-config domain-driven-design entity-framework-6 separation-of-concerns