2

我有 2 张桌子:

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'。无法创建约束。查看以前的错误。”

4

1 回答 1

1

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

于 2012-10-17T15:38:47.660 回答