このプロジェクトでは主に 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 派生クラスを作成するオプションがあります。ただし、2 つのクラスの唯一の違いは、ケース フィールドまたはタスク フィールドの存在です。もちろん、データベースには、タイプ識別子フィールドと CaseId および TaskId フィールドを持つ 1 つのテーブル Artifact があります。
私の質問: これはこの問題を解決するための有効なアプローチですか、それとも関連付けごとに結合テーブル (合計 2 つの新しいテーブル) を作成するのがより良いアプローチでしょうか?