我们有一个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>();
解决了当前的问题,但是我们在项目中有一些多对多的关系,这使它成为一个可怕的解决方案。