【发布时间】:2012-08-24 23:57:51
【问题描述】:
我需要在多个对象中引用 TimePeriod(AM、PM、NIGHT 等)。例如。预定会议、实际会议。
虽然 TimePeriod 在数据库中带有 ID,但它绝对不是实体,因为它不会更改,并且所有对象的“AM”周期都是相同的。
我的困难在于知道如何从数据库中检索这个值对象。由于不同的对象可以引用它,它不应该是它们的任何存储库方法的一部分,但同时它不应该真的拥有自己的存储库,因为它不是根。
那么你会建议如何从数据库中获取它?
谢谢。
更新
我接受了 eulerfx 的回答,因为他解释说句点仍然可以通过存储库从数据库返回,尽管我不太喜欢为多个全局值对象设置多个小型存储库的想法.这个区域对我来说仍然有点灰暗。
【问题讨论】:
-
如果它永远不会改变,为什么不将表硬编码为全局查找?
-
因此,如果我有多个这种类型的查找(例如会议长度),但在数据库中有不同的“ID”类型,我是否只有一个全局查找服务,其中两种方法是'TimePeriod GetTimePeriods'和'MeetingLength GetMeetingLengths'?
-
可能 - 这绝对属于“服务”范畴,但我不知道这种特定于域的方法是否合适。
-
但问题是值(查找)对象的 ID 可能为 Guid 或 int,并且一个值对象可能比另一个值对象具有更多字段,这使得创建通用对象 (IValueObjectLookup) 变得困难且混乱- 否则从服务中返回会很好。 (如果返回类型是您在谈论适当性时的意思 - 每个值对象的服务肯定会过大)。
-
值对象不应该有 ID。它的“身份”是由它的价值定义的。
标签: domain-driven-design ddd-repositories value-objects