2015-04-17 113 views
0

我试图将数据库迁移组合到一个表中,该表是外键进入另一个表中,该表已存在但不包含新的记录列将被引用,因为只有在Seed()方法在数据库更新结束时运行时才会添加它们。在迁移时为外键添加值

作为迁移的一部分,我加入SQL()调用新列设置相应的值,但是当AddForeignKey()被调用它与

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_Domain.LinkedAccount_Domain.LookupItem_StatusId". 

失败大概是因为i的值已经添加了不引用外键表中的记录。

在AddForeignKey()调用之前,是否有一种[很好|简单|标准]的方式将值作为迁移的一部分添加到外表中?

+0

先添加缺失值? (也许有两次迁移) – Carsten

+0

值是否真的“合适”?这个错误通常来自缺失的值。如果所有值设置正确,您可以执行“Update-DataBase -Script”以使SQL迁移可用,并在SQL管理工作室中查看。 –

+0

我试图保留它,以便我的同事只需获取最新版本的代码,然后运行Update-Database更新其本地SQL Server副本。如果我错过了一些可以强制Up-Db在运行迁移之前运行Seed()方法的技巧,那么请启发我,因为这将会*非常有用! –

回答

1

在迁移文件中,首先将数据添加到外键表中。然后你可以使用连接来获得新插入值

Sql("insert into foreignKeyTable"); 
Sql("insert into mainTable"); 

你可以使用像这样的mainTable插入,以获得新插入的数据的id的值。

insert into mainTable 
select fkId, ... 
from foreignKeyTable 
where values in ('insertedValeue1','insertedValue2') // the new values in FK table