没有getter的DDD对象持久性

csh*_*iff 5 getter domain-driven-design repository

我想我错过了一些非常明显的东西,但是对于域对象和它们通过存储库的持久性存在很多分歧,因此很难得到明确的答案.

假如说

  • 我已经构建了一个纯域模型,它不依赖于我的解决方案中的任何其他程序集,因为DDD只有一个明确的根聚合.

  • 我有一个特定于域的存储库,用于保存服务层调用的根聚合.

  • 在内部,存储库使用EF来保持对象及其子对象

如果避免暴露getter(绝对不是setter),那么我的存储库如何访问对象的状态以实际持久化它.

选项?

  1. 依赖注入域模型(DDD气味??)

  2. 只有吸气剂(DDD味道??)

还有一个相反的问题是将对象拉出数据库.通过构造函数初始化似乎是唯一可能的候选者.

eul*_*rfx 2

ORM 可以通过反射获取对象内部的数据。例如,NHibernate 有多种属性访问策略,允许映射的类仅具有私有字段,而没有 getter 或 setter。我认为EF应该有类似的设施。