首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除包含DbSet对象的DbSet对象

删除包含DbSet对象的DbSet对象
EN

Stack Overflow用户
提问于 2014-07-28 09:18:04
回答 1查看 98关注 0票数 0

我编写了一个C# MVC5 internet应用程序,其中有一个具有List<MapLocation>MapCompany对象。我有DbSet<MapCompany>DbSet<MapLocation>。在尝试删除MapCompany对象时,当我调用Delete结果时,将得到以下错误:

与引用约束"FK_dbo.MapLocations_dbo.MapCompanies_MapCompany_Id".冲突的DELETE语句冲突发生在数据库"TestDatabase“、表"dbo.MapLocations”、列'MapCompany_Id‘中。 声明已被终止。

删除MapLocations对象时是否需要删除所有相关的MapCompany?如果是的话,最简单的方法是什么?是否有一种更简单/更好的方法,而不是循环遍历每个对象,手动删除每个对象?而且,在以后的某个阶段,每个MapLocation都将有许多MapLocationItem对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 09:20:54

手册

手动删除项目。这有时是首选的选项,因为它可以让您完全控制。

级联删除

可以将外键关系设置为级联删除。这意味着删除父记录将从引用它的表中删除所有记录。若要启用表上的级联删除,请阅读this answer

或者,如果您使用的是代码优先开发,则可以使用fluent API启用级联删除:

代码语言:javascript
复制
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<MapCompany>()
        .HasOptional(a => a.MapLocations)
        .WithOptionalDependent()
        .WillCascadeOnDelete(true);
}

这里很好地讨论了级联删除的利弊:What are the Pros and Cons of Cascading delete and updates?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24992023

复制
相关文章

相似问题

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