MVC プロジェクトで最初に Entity Framework コード (バージョン 6) と GraphDiff を使用しています。
データベース内のいくつかのテーブルをマップするエンティティがいくつかあります。
public class CommunicationPlan
{
public int CommunicationPlanID { get; private set; }
[Owned]
public List<CommunicationTopic> Topics { get; private set; }
}
public class CommunicationTopic
{
public int CommunicationTopicID { get; private set; }
[Owned]
public List<ContributingMember> Members { get; private set; }
}
public class ContributingMember
{
public int ContributingMemberID { get; private set; }
// other simple properties
}
CommunicationPlan
sを持つ多くCommunicationTopic
の sを作成してContributingMember
集約 root を保存するとCommunicationPlan
、GraphDiff はすべてのレコードを作成し、それらをデータベースに関連付けます。(私が正確に望むように)
問題
既存
の の 1 つを削除しようとすると、このトピックはデータベースから削除されます (必要に応じて) 。であり、データベースに存在します。CommunicationTopic
CommunicationPlan
ContributingMember
CommunicationTopic
ContributingMember
Null 値を受け入れないように外部キーを構成すると、次の例外が発生します。
操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。
質問ContributingMember
親が削除されたときに GraphDiff が s レコードを削除するようにエンティティを構成するにはどうすればよいCommunicationTopic
ですか?