Domain driven design 全局值对象
我有一个时间段(上午,下午,晚上等)的一些对象的参考需要。预定的会议,实际的会议 虽然时间段在数据库中具有ID,但它肯定不是实体,因为它不会更改,“AM”时间段在所有对象中都是相同的 我的困难在于知道如何从数据库中检索这个值对象。因为不同的对象可以引用它,所以它不应该是它们的任何存储库方法的一部分,但同时它不应该真正拥有自己的存储库,因为它不是根 那么,您建议如何从数据库中获取该文件 谢谢 更新Domain driven design 全局值对象,domain-driven-design,ddd-repositories,value-objects,Domain Driven Design,Ddd Repositories,Value Objects,我有一个时间段(上午,下午,晚上等)的一些对象的参考需要。预定的会议,实际的会议 虽然时间段在数据库中具有ID,但它肯定不是实体,因为它不会更改,“AM”时间段在所有对象中都是相同的 我的困难在于知道如何从数据库中检索这个值对象。因为不同的对象可以引用它,所以它不应该是它们的任何存储库方法的一部分,但同时它不应该真正拥有自己的存储库,因为它不是根 那么,您建议如何从数据库中获取该文件 谢谢 更新 我赞同eulerfx的回答,因为他解释说句点仍然可以通过存储库从数据库返回,尽管我并不真正喜欢为多个
我赞同eulerfx的回答,因为他解释说句点仍然可以通过存储库从数据库返回,尽管我并不真正喜欢为多个全局值对象设置多个小型存储库的想法。这个区域对我来说还是有点灰色。因为
时间段
是一个值对象,当其他对象引用它时,它们引用的是值本身,而不是ID。使时间段对象不可变,以便对象一旦引用时间段,就知道它不会更改。时间段值可以存储在数据库表中,然后表记录具有ID,但是这些ID不需要在代码中表示。例如,如果您希望提供一个显示可用时间段列表的UI,则可以使用一个简单的存储库来检索时间段。存储库并不总是必须只返回聚合。如果时间段在本质上是高度静态的,那么你可以考虑缓存在内存中,或者甚至有一个具有所有可用时间周期的静态类。p>
虽然TimePeriod在数据库中有一个ID,但它肯定不是一个实体,因为它不会改变
只要对象具有定义良好的生命周期,即使其内容不变,它也可以是一个实体。要问的问题是“是否会动态创建和删除时段?”
- 是吗?那么TimePeriod应该是一个拥有自己存储库的实体。这是Eric Evans在他的DDD书中描述的一个例子
- 没有?然后,您不需要数据库,只需静态地定义时间段