实体框架迁移无法创建外键约束

时间:2012-10-16 16:23:50

标签: entity-framework foreign-keys many-to-many constraints database-migration

我有两张桌子:

public class Work
{
    public int WorkId { get; set; }
    (...)
}

public class Check
{
    public int CheckId { get; set; }
    (...)
}

然后我想在它们之间添加多对多的关系,所以:

public class WorkCheck
{
    [Key, Column(Order = 0)]
    [ForeignKey("Work")]
    public int WorkId { get; set; }
    public virtual Work Work { get; set; }

    [Key, Column(Order = 1)]
    [ForeignKey("Check")]
    public int CheckId { get; set; }
    public virtual Check Check { get; set; }

    (...)
}

   public class Work
    {
        public int WorkId { get; set; }
        (...)
        public virtual IList<WorkCheck> WorkChecks { get; set; }
    }

    public class Check
    {
        public int CheckId { get; set; }
        (...)
        public virtual IList<WorkCheck> WorkChecks { get; set; }
    }

在软件包管理器控制台中,我运行了“Add-Migration WorkCheckTableAdded”命令,没有显示错误。

但是,当我执行“Update-Database -verbose”命令时,我得到了异常: “外键'FK_dbo.WorkCheck_dbo.Work_WorkId'在引用表'dbo.Work'中引用无效列'WorkId'。 无法创建约束。请参阅先前的错误。“

1 个答案:

答案 0 :(得分:1)

在新项目中不会发生此问题。它可能与我项目中的一些失败的迁移脚本有关。为了重置迁移,我删除了VS项目和目标数据库中的Migrations文件夹。