.net-core – 使用EF Core删除级联
我目前在EF Core遇到了一些问题.我有一些我需要删除的数据,我很想知道流畅的API如何工作,完全与.OnDelete()函数有关.
考虑到microsofts own websites的经典博客/帖子情景,我想知道什么实体,确切地说OnDelete()是’目标'(缺少一个更好的词)在某些情况下它似乎是博客,在其他情况下,帖子.是否可以从双方定义Cascade删除(当父博客是删除帖子时),如果是这样,我想代码应该如下所示: model.Entity< Post>().HasOne(p => p.Blog).WithMany(b => b.Posts).HasForeignKey(p => p.BlogId).OnDelete(DeleteBehavior.Cascade) 据我所知,这是说“当博客被删除时,首先删除所有引用此博客的帖子”,这意味着OnDelete(DeleteBehavior.Cascade)适用于博客,而不是发布. 但这是一样的吗? model.Entity< Blog>().HasMany(b => b.Posts).WithOne(p => p.Blog).OnDelete(DeleteBehavior.Cascade) 或者OnDelete(DeleteBehavior.Cascade)是否适用于Post而不是博客? 解决方法
级联删除始终在一个方向上工作 – 从主体实体到依赖实体,即删除主体实体删除依赖实体.对于一对多的关系,一方始终是主要的,而多方是依赖方.
看起来你对流畅的配置感到困惑.请注意,每个关系由两端组成.流畅的配置允许您从一端开始并将其与另一端相关联,反之亦然,但您仍在配置(定义)单个关系.所以 Entity<A>().HasOne(a => a.B).WithMany(b => b.As) 是相同的 Entity<B>().HasMany(b => b.As).WithOne(a => a.B); 他们都定义了一个相同的关系.您选择哪一个并不重要,只需为每个关系使用单个配置以避免出现差异. 话虽如此, model.Entity<Post>().HasOne(p => p.Blog).WithMany(b => b.Posts) .HasForeignKey(p => p.BlogId) .OnDelete(DeleteBehavior.Cascade); 和 model.Entity<Blog>().HasMany(b => b.Posts).WithOne(p => p.Blog) .HasForeignKey(p => p.BlogId) .OnDelete(DeleteBehavior.Cascade); 是一样的,并定义从Blog到Post的单一一对多关系.由于Blog是一方而Post是多方,因此Blog是主要实体而Post是依赖实体,因此删除Blog将删除相关帖子. 参考: > Relationships – Definition of terms (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 要解决的JavaScript难题:window.confirm = div
- asp.net – 将通用模型的子类传递给剃刀视图
- asp.net-mvc – MVC项目中的System.Globalization.CultureN
- asp.net – 使用IIS和ASP .Net实现负载均衡
- asp.net – 我可以确定HttpModules是按照HttpApplication.M
- asp.net – 安装MvcScaffolding包时的NuGet执行策略错误
- asp.net-mvc – HTML.CheckBox(string)计算为两个HTML元素而
- 如何在asp.net中验证日期
- asp.net-mvc – 访问OAuth中的电子邮件地址ExternalLoginCa
- asp.net-mvc – 客户端表单验证不适用于MVC中的模态对话框
- Asp.Net嵌套表单
- .net – 如何使用SmtpClient.SendAsync发送带有附
- asp.net-mvc – 绕过asp.net mvc中特定类型的Dat
- yield在WCF中的错误使用——99%的开发人员都有可
- 如何使用ASP.NET和iframe对跨域的用户进行身份验
- asp.net-mvc – 在空项目中缺少类型Mono.Web.Uti
- asp.net – 查询字符串参数使我的应用程序面临风
- asp.net – 找不到’AppModule’的NgModule元数据
- asp.net – 找不到指定文化或中性文化的任何资源
- asp.net-web-api – 什么将WCF Web API中的HttpO