我有下一个型号:
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Statement> Statements { get; set; }
public virtual ICollection<Criterion> Criteria { get; set; }
}
public class Statement
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<Criterion> Criteria { get; set; }
}
public class Criterion
{
public int Id { get; set; }
public string Name { get; set; }
}
接下来的级联设置:
modelBuilder.Entity<Company>()
.HasMany(x => x.Criteria)
.WithOptional()
.WillCascadeOnDelete();
modelBuilder.Entity<Company>()
.HasMany(x => x.Statements)
.WithRequired(x => x.Company)
.WillCascadeOnDelete();
modelBuilder.Entity<Statement>()
.HasMany(x => x.Criteria)
.WithOptional()
.WillCascadeOnDelete();
我使用EF迁移来创建数据库。但是,如果我应用迁移,我有SQL Server错误“引入FOREIGN KEY约束可能会导致循环或多个级联路径”。
是的,我有两条删除标准的途径:
公司 - &GT;声明 - &GT;标准
公司 - &GT;标准
但我同时没有StatementId和CompanyId的任何标准。这就是为什么如果我关闭迁移,删除公司的工作完美。
我尝试通过强制EF迁移不将WillCascadeOnDelete应用于数据库来解决此问题。我怎么能这样做?