如何强制EF迁移不将WillCascadeOnDelete应用于数据库?

时间:2014-06-27 09:41:39

标签: c# sql entity-framework ef-migrations

我有下一个型号:

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应用于数据库来解决此问题。我怎么能这样做?

0 个答案:

没有答案