首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >级联删除在EF 6代码中不起作用

级联删除在EF 6代码中不起作用
EN

Stack Overflow用户
提问于 2017-10-07 15:17:18
回答 1查看 746关注 0票数 1

我有以下实体

代码语言:javascript
复制
public class Division
{
    public int Id { get; set; }
    public SubDivision SubDivision { get; set; }
}

public class SubDivision
{
    public int Id { get; set; }
}

然后fluent API

代码语言:javascript
复制
            modelBuilder.Entity<Division>()
                        .HasOptional(x => x.SubDivision)
                        .WithOptionalDependent()
                        .WillCascadeOnDelete(true);

然后,我尝试删除一个部门,我期待它的SubDivisions被删除

代码语言:javascript
复制
Division div = c.Divisions.Include(x => x.SubDivision).First();
c.Divisions.Remove(div);
c.SaveChanges();

知道有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 15:41:51

级联删除总是从主体(被引用的实体)工作到依赖的(引用它的实体),即删除主体自动删除依赖项。

在一对多的关系中,主体总是一方,而依赖者是多方面的。

在一对一的关系中,所需的结束始终是主体和可选的端依赖的.但是,如果两端都是必需的,或者两端都是可选的(与您的一样),则主体和依赖项由配置决定。在您的示例中,.WithOptionalDependent()行告诉EF正在配置的实体(Division)是依赖的,因此Division将有一个FK到SubDivision,删除SubDivision也将删除Division

如果意图不同(如问题所示),只需替换

代码语言:javascript
复制
.WithOptionalDependent()

使用

代码语言:javascript
复制
.WithOptionalPrincipal()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46621802

复制
相关文章

相似问题

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