在最近从 EF4.0 升级到 EF5.0 和 Code First 的一些规则中,让域模型与 Code First 一起玩,我们的团队决定通过使持久对象的 POCO 代表 1 对 1 映射来拆分我们的关注点这些持久 POCO 中的数据库列和关系。为每个持久对象使用 FluentApi 配置,我们暂时称这些“持久对象”。一些域对象利用抽象类、几个接口和业务规则中的规范拆分成几个持久化对象。由于 DDD 将域业务对象称为“实体”,我们发现这令人困惑,因为 EF 指的是实体。我们将 POCO 放在一个单独的库项目中。对我来说,它们开始看起来像 DAO。
鉴于以上是选择将域对象与 Code First 的持久 POCO 合同分开?
我提出的反对意见是,这意味着持久对象将作为 WCF 数据服务对象公开。我停止了开发,直到我们有了一个小的工作版本(我们的核心对象可以推送到 5 个表和 3 个域对象)。我不想继续使用其他 70 多个 POCO,直到我确定这是最佳实践或更好的另一种更类似于 Eric 在蓝皮书中的大纲的方式。