2015-04-17 95 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