你如何处理DDD和EF4

Tom*_*uλa 6 domain-driven-design entity-framework-4

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

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

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

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

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

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

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

谢谢你的帮助.

托马斯

Tom*_*uλa 0

自从我问这个问题以来已经有一段时间了,并且有机会自己做。

我认为在 DAL 层之外公开 IQueryable 并不是一个好的做法。它带来了更多它解决的问题。我说的是大型 MVC 应用程序。首先,重构更加困难,许多开发人员从视图中使用 IQueryable 实例,并在与解析 IQueryable 时连接已被释放这一事实进行斗争之后。性能问题,因为经常查询所有数据库以获取给定的结果集等等。

我宁愿从我的存储库中公开 Ienumerable 并相信我,它为我省去了很多麻烦。