我首先在我的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
创建CommunicationTopic
个ContributingMember
并保存聚合根CommunicationPlan
时,GraphDiff会创建所有记录并将它们关联起来在数据库中。
(正如我想的那样)
问题
当我尝试从现有CommunicationTopic
中删除其中一个CommunicationPlan
时,会从数据库中删除此主题(根据需要),但与ContributingMember
相关的CommunicationTopic
ContributingMember
没有从数据库中删除,只是它们的外键值设置为null,它们驻留在数据库中。
当我配置ContributingMember
的外键以使其不接受空值时,我收到以下异常
操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
问题如何配置实体以使GraphDiff在其父级CommunicationTopic
- 已删除时删除readFile(path.resolve("../../../../../log/serverError.log"))
的记录?
答案 0 :(得分:1)
我认为您可能有两种方法来解决此问题