【发布时间】:2014-11-27 15:20:10
【问题描述】:
我正在开发一个使用 iBatis 作为 ORM 的旧 c# 应用程序。我在建模两个必须添加到域中的新实体时遇到了一些问题。
我涉及 3 个旧实体:Process、Society 和 Activity
现在我必须添加:
- 过程与社会之间的多对多关系
- 活动与上述 M2M 关系之间的多对多关系
这两种关系都有一些属性,我必须从两个方向访问它们: 我需要知道:
- 一个社会的所有过程
- 一个过程中涉及的所有社会
- 在社会进程中完成的所有活动
- 在一项活动中分析所有社会的所有过程
与我项目中的所有其他 M2M 一样,我将第一个关系映射为 3 个对象:
-
BaseLinkProcessSociety包含关系属性(与社会和负责人的过程相关性) -
LinkProcessSociety通过添加 Society 对象扩展基础对象 -
LinkSocietyProcess通过添加 Process 对象扩展基础对象
这样在我的Process 对象中我有LinkProcessSociety 的列表,而在Society 对象中我有LinkSocietyProcess 对象的列表
现在的问题是:如何映射第二个 M2M 关系?我没有映射整个 ProcessSociety 的对象。我必须创建它吗?我不太喜欢这个主意
还有其他更好的建模解决方案吗?
编辑@Sebastian Oliveri 答案
在 M2M 对象中我必须添加一些属性,所以它不能是通用的,
使用您的 ProcessOfSociety 对象:
class ProcessOfSociety {
var processId;
var societyId;
Person personInCharge;
int relevance;
}
但我的问题是:如何将此对象映射为Process 对象中的属性?
我想要这样的东西
class Process {
var processId;
var processDescription;
IList<ProcessOfSociety> SocietyInvolvedList;
}
使用此协议:
process.SocietyInvolvedList[1].Society.societyDescription
甚至
class Society{
var societyId;
var societyDescription;
IList<ProcessOfSociety> FolowedProcesses;
}
使用此协议:
society.FolowedProcesses[1].Process.processDescription
所以我不能在ProcessOfSociety 中只有 id 属性
【问题讨论】:
标签: c# many-to-many domain-driven-design relationship