【发布时间】:2010-12-17 04:12:55
【问题描述】:
我一直在为这个项目遵循主要是 DDD 方法,因此,像任何 DDD 一样,我首先创建了我的域模型类。我的意图是将这些 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 个新表)创建一个连接表是更好的方法?
【问题讨论】:
标签: sql-server architecture .net-3.5 domain-driven-design poco