我在我的MVC项目中首先使用实体框架代码(version 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时,这个主题将从数据库中删除(根据我的需要),但是与该CommunicationTopic相关的ContributingMember没有从数据库中删除,这只是它们的外键值设置为null,并且它们驻留在数据库中。
配置ContributingMember的外键使其不接受空值时,将收到以下异常
操作失败:由于一个或多个外键属性不可空,关系无法更改。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
问题,我如何配置实体,使GraphDiff删除ContributingMember的记录时,其父-CommunicationTopic删除?
发布于 2016-08-27 08:56:02
我想你可能有两种方法来解决这个问题
https://stackoverflow.com/questions/39144153
复制相似问题