EF6多对多级联删除

时间:2019-10-11 12:13:05

标签: c# asp.net entity-framework

我们有一个EF项目,最初是Database首先。稍后我们首先要迁移到代码,这意味着代码中不存在大量迁移。

现在,我们需要为此项目创建一个新的数据库。因此,删除了所有迁移并进行了新的初始迁移。当我们尝试更新/创建数据库时,我们遇到了级联删除和多对多关系的问题。用流利的映射将关系定义为:

modelBuilder.Entity<Assistant>()
            .HasMany(e => e.Clients)
            .WithMany(e => e.Assistants)
            .Map(m => 
                m.ToTable("Clients_Bind_Assistants")
                .MapLeftKey("AssistantID")
                .MapRightKey("ClientID")
            );

在运行更新数据库时,我们收到以下错误:

  

在表“ Clients_Bind_Assistants”上引入FOREIGN KEY约束“ FK_dbo.Clients_Bind_Assistants_dbo.Clients_ClientID”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。

我们可以通过Fluent映射将级联删除定义为false吗?

编辑:

            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

解决了当前的问题,但是我们在项目中有一些多对多的关系,这使它成为一个可怕的解决方案。

0 个答案:

没有答案