我一直在为这个项目遵循主要是 DDD 方法,所以,像任何 DDD'er 一样,我首先创建了我的域模型类。我的意图是将这些 POCO 用作我的 LINQ-to-SQL 实体(是的,它们不是纯 POCO,但我可以接受)。我已经开始创建数据库模式和外部映射 XML 文件,但是在建模实体的关系和关联时遇到了一些问题。
工件代表一个文档。工件可以与任务或案例相关联。Case 实体如下所示:
public class Case
{
private EntitySet<Artifact> _Artifacts;
public IList<Artifact> Artifacts
{
get
{
return _Artifacts;
}
set
{
_Artifacts.Assign(value);
}
}
.
.
.
}
由于 Artifact 可以与 Case 或 Task 相关联,因此我可以选择在 Artifact 类上使用继承来创建 CaseArtifact 和 TaskArtifact 派生类。然而,这两个类之间的唯一区别是是否存在案例字段或任务字段。当然,在数据库中,我将有一个表 Artifact,其中包含类型鉴别器字段以及 CaseId 和 TaskId 字段。
我的问题:这是解决此问题的有效方法,还是为每个关联(总共 2 个新表)创建一个连接表是更好的方法?