首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GraphDiff删除拥有的实体2级深度

使用GraphDiff删除拥有的实体2级深度
EN

Stack Overflow用户
提问于 2016-08-25 11:33:11
回答 1查看 396关注 0票数 1

我在我的MVC项目中首先使用实体框架代码(version 6)和GraphDiff。

下面是一些实体,它们映射了数据库中的一些表。

代码语言:javascript
复制
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
}

当我创建包含许多CommunicationPlanCommunicationTopic和它们的ContributingMember,并保存聚合根CommunicationPlan时,GraphDiff将创建所有的记录并将它们关联到数据库中。(正如我想要的那样)

问题

当我试图从现有的CommunicationTopic中删除其中一个CommunicationPlan时,这个主题将从数据库中删除(根据我的需要),但是与该CommunicationTopic相关的ContributingMember没有从数据库中删除,这只是它们的外键值设置为null,并且它们驻留在数据库中。

配置ContributingMember的外键使其不接受空值时,将收到以下异常

操作失败:由于一个或多个外键属性不可空,关系无法更改。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

问题,我如何配置实体,使GraphDiff删除ContributingMember的记录时,其父-CommunicationTopic删除?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-27 08:56:02

我想你可能有两种方法来解决这个问题

  1. 尝试将数据库中关系的级联属性配置为CommunicationTopic和ContributingMember之间的级联删除
  2. 在尝试删除AggregateRoot时,请确保加载了它的整个图
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39144153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档