实体框架和 DDD
这是我的问题:我首先使用EntityFramework 4.1模型,并且我有两个程序集(域和存储)
域包含我所有的业务逻辑 存储管理数据库的所有持久性逻辑
,因此我不希望在我的域中进行任何实体框架查询。我使用存储库来公开商店。希克!我的 edmx 在商店中,因此 TT 也生成我的商务课程。由于我希望我的业务类位于程序集的 Domain 中,因此我将 TT 移至 Domain 中并更改代码生成器的命名空间。我必须参考我的商店来了解我的域类(逻辑!)。但是如何从我的域调用我的存储库而不创建循环引用......?
总结:
- My Store参考Domain来了解业务类。
- My Domain 参考存储以了解存储库
Here's my problem: I use EntityFramework 4.1 Model first, and I have two assembly (Domain and Store)
The domain contains all my business logic
Store manages all persistence logic to the database
So I do not want any entity framework query in my Domain. I use a repository to expose the Store. The Hic! My edmx is in the Store, so the TT that generates my business classes too. As I want my business classes in the assembly's Domain , I moved the TT into the Domain and change the namespace of code generator. I must refer my Store to know my Domain classes (logic !). But how to call my repository from my Domain without creating a circular reference ...?
Summary:
- My Store reference Domain to know the business classes.
- My Domain reference Store to know the repository
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的域层需要一个存储库接口。然后存储库实现位于您的基础设施层,并使用 EF。这样,您的基础设施层取决于域层(通过存储库接口的实现以及域实体的创建/检索),但域不依赖于基础设施层。
Jeffrey Palermo 关于“onion”的文章对这种一般架构模式进行了很好的解释。架构”。
You need a repository interface in your domain layer. Then the repository implementation is in your infrastructure layer, and uses EF. This way your infrastructure layer depends on your domain layer (via the implementation of the repository interface, and the creation/retrieval of domain entities), but the domain does not depend on the infrastructure layer.
A good explanation of this general architectural pattern is given in Jeffrey Palermo's articles on the "onion architecture".