加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

域驱动设计 – 如何处理DDD和EF4

发布时间:2020-05-22 23:46:04 所属栏目:程序设计 来源:互联网
导读:我在尝试使用EF4应用DDD时遇到了几个问题(在ASP MVC2上下文中).非常感谢您的advaice. 首先,我开始使用POCO,因为在许多情况下,对ObjectContext的依赖并不是很舒服. 去POCO解决了一些问题,但经验并不是我习惯使用的NHibernate. 我想知道是否可以使用设计器,不仅

我在尝试使用EF4应用DDD时遇到了几个问题(在ASP MVC2上下文中).非常感谢您的advaice.

首先,我开始使用POCO,因为在许多情况下,对ObjectContext的依赖并不是很舒服.

去POCO解决了一些问题,但经验并不是我习惯使用的NHibernate.

我想知道是否可以使用设计器,不仅可以生成实体,还可以生成值对象(ComplexType?).如果我的意思是Value Object是一个具有一个没有任何设置属性的ctor的类(需要进行T4修改?).

我发现向贫血实体添加行为的唯一方法是创建扩展由edmx生成的部分类.我对这种方法不满意.

我不知道如何使用一个edmx创建多个存储库.现在我使用部分类来为每个聚合分组方法.事实上,每个组都是一个存储库.

最后一个问题是关于IQueryable.它应该暴露在存储库之外吗?如果我参考了这本书,那么存储库应该是一个执行单元,不应该暴露像IQueryable这样的东西.你怎么看 ?

谢谢你的帮助.

托马斯

使用POCO很好,但请注意,EntityObject不需要ObjectContext.

是的,复杂类型是值对象,是的,您可以在设计器中生成它们.选择实体的多个属性,右键单击,然后选择重构为复杂类型.

我强烈建议将业务方法放在自己的类型中,而不是实体上.如果你必须维护它们,“贫血”类型可能是一个问题,但是当它们被编码时,它们几乎不是维护问题.使业务逻辑与实体类型分离,可以使业务规则和数据模型独立发展.是的,如果你必须混淆这些问题,你必须使用部分课程,但我不认为将你的模型和你的规则分开是一件坏事.

我认为存储库应该暴露IQueryable,但是你可以提出域服务不应该这样做的好例子.人们经常尝试将他们的存储库构建到域服务中,但请记住,存储库的存在只是为了抽象出持久性.像安全性这样的问题应该在域服务中,并且你可以认为拥有IQueryable给消费者提供了太多的权力.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读