![]() |
1
3
以下是我将如何处理它:
这个 项目成员 请不要创建特定角色的课程-该课程已经学习。 sample app 为了证明这一点(也包括关系):
请随意使用代码。希望你觉得有用。 |
![]() |
2
1
您正在对多对多关系进行建模:一个项目可以有许多人参与,一个人可以参与多个项目。 您将关系建模为一个项目角色,该角色除了充当Person的双向链接之外<-&燃气轮机;项目中,还记录角色类型和该人员在该项目中填写该角色类型的开始/结束。(注意英文的“that”代表数据库FK,或者在代码中代表指针/引用?)
或者我们可以从另一个方向,从项目:
基本上,我认为: 2) 有额外数据(何时、何种数据)是关系的标准 |
![]() |
3
0
|
![]() |
4
0
您拥有的是与其他数据、角色的多对多关系。我们有一个类似的结构,除了在我们的案例中,一个人可能在一个项目中扮演多个角色,所以我很难回答同样的问题。一种解决方案是创建一个ProjectPerson类,该类扩展Person并添加role属性:
您的Project类现在有一个ProjectPerson集合,但Person类有一个Project集合,因为扩展Project类以添加角色是没有意义的。您必须做一些额外的工作(在ProjectPerson集合中查找此人)才能从此人的角度找到项目中的角色。 第二种解决方案是处理与其他数据的多对多关系的标准方法。创建一个ProjectRole类,并将其建模为Project和Person两个一对多关系的多方面。也就是说,Project和Person都有一个ProjectRole集合。 在选择解决方案时,考虑数据访问策略将如何支持模型是非常重要的。您希望避免加载集合需要对集合中的每个对象进行一次或多次数据库访问的情况。 |
![]() |
5
0
似乎有两个主要实体-项目和项目成员。 项目成员具有“成员角色”和“成员名称”属性。这些属性中的任何一个都可能属于一个域,即一组值,这些值可以在查找表中维护,以方便查找和用于搜索。假设有人需要执行特定角色/工作的所有项目成员的信息。 笔记查找表可以添加条目,但通常不会更改条目的值。一旦从查找表中选择了一个值,则该值将被视为所属表(在本例中为项目成员表)的永久固定装置。 我不希望在任何业务中看到一个“Person”实体或表,除非像上面这样方便地将其作为查找表。人力资源部门将保留一份员工名单,其中包含工资单等要求的特定信息,但业务部门不需要了解员工的基本情况。注意:定位业务流程以识别实体-不要虚构。 |
![]() |
Tony Raimo · 域实体是否应该调用存储库? 7 年前 |
![]() |
Seb · DDD只读存储库返回“值对象” 7 年前 |
![]() |
tlt · 使用嵌套对象和大集合进行聚合根优化 7 年前 |
![]() |
PatrickSJ · DDD,状态对象/值对象 7 年前 |
![]() |
msmani · DDD更改聚合根id 7 年前 |
![]() |
DuskMcDusk · 逻辑和性能中的聚合根冲突 7 年前 |