"Introducing FOREIGN KEY constraint"



使用:VS 2013,实体框架代码优先,ASP.NET Web 项目 MVC

我有 2 个模型,一个需要 2 个 FK 用于同一张桌子:

public class A
{
    public int Id { get; set; }
    public string  Name { get; set; }
}
public class B
{
    public int Id { get; set; }
    public int Id1 { get; set; }
    [ForeignKey("Id1")]
    public virtual A A1 { get; set; }
    public int Id2 { get; set; }
    [ForeignKey("Id2")]
    public virtual A A2 { get; set; }
}

经过enable-migrationAdd-Migration Test,当我运行Update-Database时,我收到以下消息:

引入外键约束 'FK_dbo.B_dbo。表 "B" 上的A_Id2"可能会导致周期或多个级联路径。指定"删除时不执行任何操作"或"更新时不执行任何操作",或修改其他外键约束。

使用此代码

public class A
{
    public int Id { get; set; }
    public string  Name { get; set; }
}
public class B
{
    public int Id { get; set; }
    public int Id1 { get; set; }
    [ForeignKey("Id1")]
    public virtual A A1 { get; set; }
    public int Id2 { get; set; }
    [ForeignKey("Id2")]
    public virtual A A2 { get; set; }
}
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<B>()
                    .HasRequired(e => e.A1)
                    .WithMany()
                    .HasForeignKey(c => c.Id1)
                    .WillCascadeOnDelete(false)
                    .HasRequired(e => e.A2)
                    .WithMany()
                    .HasForeignKey(c => c.Id2)
                    .WillCascadeOnDelete(false)
                    ;       
    }

或者你可以使用反向属性属性。

相关内容

  • 没有找到相关文章

最新更新