質問の短いバージョン: 「2 つのサブクラスを持つスーパークラスを持っても大丈夫ですか。1 つはエンティティで、もう 1 つは値オブジェクトですか?」
より長いバージョンへ: T にはTeamスーパークラスがあります。チームには、Master、Helpers、およびCodeがあります。次に、 TeamのサブクラスであるDefaultTeamを持っています。これは、独自の **Code**** を持つエンティティであり、ドメイン ID を持っています。次に、 **ExecutionTeam を持っています。これはTeamのサブクラスであり、追加の属性OriginalTeamがあります。
public abstract class Team{
public string Code{ get; protected set; }
public Worker Master{ get; protected set; }
public IList<Worker > Helpers { get; protected set; }
...
}
public class DefaultTeam: Team
{
}
public class ExecutionTeam : Team
{
public virtual string Code { get { return OriginalTeam.Code; } }
public virtual DefaultTeam OriginalTeam { get; private set; }
...
}
ExecutionTeamは、 Taskを実行するチームです。Taskを実行する必要がある場合は、 DefaultTeamを選択して実行します。ただし、 DefaultTeamからヘルパーを変更できます(マスターは変更されません)。
タスクを実行するチームは、 DefaultTeam ( OriginalTeam )のバリエーションですが、そのタスク専用に選択されたヘルパーを持ちます。
ExecutionTeamには、 OriginalTeam と同じコードが含まれます。したがって、ExecutionTeam には一意の ID がありません。同じDefaultTeamによるタスクの実行が 10 回ある場合、同じコードを持つ (同じOriginalTeamを持つ) 10 個のExecutionTeamsが存在します。したがって、ExecutionTeamをエンティティにすることはできません。
しかし、同じスーパークラス (両方ともチーム) を共有するエンティティと値オブジェクトを持つことは、少し奇妙です。おそらく、このドメイン モデルには何か問題があります。
意見が必要です。
ありがとう