实体框架和DDD

时间:2011-09-28 12:49:56

标签: entity-framework-4 linq-to-entities domain-driven-design

这是我的问题:我首先使用EntityFramework 4.1模型,我有两个程序集(Domain和Store)

该域包含我的所有业务逻辑 Store管理所有持久性逻辑到数据库

所以我不想在我的域中进行任何实体框架查询。我使用存储库来公开商店。 Hic!我的edmx在商店中,所以TT也生成我的商务课程。由于我想在程序集的域中使用业务类,因此我将TT移动到域中并更改了代码生成器的命名空间。我必须引用我的商店来了解我的Domain类(逻辑!)。但是如何在不创建循环引用的情况下从我的域调用我的存储库...?

要点:

  • 我的商店参考域了解业务类。
  • 我的域名参考存储以了解存储库

1 个答案:

答案 0 :(得分:4)

您的域层中需要存储库接口。然后,存储库实现位于您的基础架构层中,并使用EF。这样,您的基础架构层依赖于您的域层(通过存储库接口的实现以及域实体的创建/检索),但域不依赖于基础架构层。

Jeffrey Palermo's articles on the "onion architecture"中给出了对这种一般架构模式的一个很好的解释。