如何将具有外键的 Entity Framework 迁移应用到包含数据的表上

28 浏览
0 Comments

如何将具有外键的 Entity Framework 迁移应用到包含数据的表上

我必须将我的本地数据库应用昨天我的一个同事添加的迁移:

public partial class addDocumentFK : DbMigration
{
    public override void Up()
    {
        CreateIndex("dbo.DocumentHierarchy", "DocumentId");
        AddForeignKey("dbo.DocumentHierarchy", "DocumentId", "dbo.Document", "Id");
    }
    public override void Down()
    {
        DropForeignKey("dbo.DocumentHierarchy", "DocumentId", "dbo.Document");
        DropIndex("dbo.DocumentHierarchy", new[] { "DocumentId" });
    }
}

问题是我已经在我的Document表中有数据,迁移失败了:

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.DocumentHierarchy_dbo.Document_DocumentId". The conflict occurred in database "dgc_db", table "dbo.Document", column 'Id'.

有没有办法避免这个冲突,而不必清除Document表中的所有数据?

0
0 Comments

在使用Entity Framework迁移时,如果对一个包含数据的表应用了外键关系,可能会出现以下两种情况:

1. 从Document表中移除那些在Document Hierarchy Table中找不到关系的数据;

2. 向Document Hierarchy表中添加带有正确主键的数据,以确保关系正确。

在完成上述任意一种情况后,就可以通过迁移添加外键关系。

0