我們使用實體框架4.3.1的migrate.exe工具從我們的TeamCity構建服務器運行數據庫遷移,作爲持續集成和部署自動化的一部分。其中的一個問題,我們已經遇到的是,當它失敗的migrate.exe工具不發出非零退出代碼:實體框架4.3.1 Migrate.exe非零退出代碼
C:\<path>\packages\EntityFramework.4.3.1\tools>migrate.exe AppContext /startupdirectory:C:\<path>\bin\Debug /startupconfigurationfile:C:\<path>\Web.config /verbose
<Bunch of successful migrations>
Applying explicit migration: 201202212004585_UpdateTable
VERBOSE: ALTER TABLE [TableA] DROP CONSTRAINT [FK_TableA_TableB]
System.Data.Entity.Migrations.Design.ToolingException: 'FK_TableA_TableB' is not a constraint.
Could not drop constraint. See previous errors.
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMig
ration, Boolean force)
at System.Data.Entity.Migrations.Console.Program.Run()
at System.Data.Entity.Migrations.Console.Program.Main(String[] args)
ERROR: 'FK_TableA_TableB' is not a constraint.
Could not drop constraint. See previous errors.
C:\<path>\packages\EntityFramework.4.3.1\tools>echo %errorlevel%
0
這導致團隊市通過構建看成是「成功」的時候遷移失敗,應該失敗。
我們的臨時解決方法是grep構建日誌中的「ERROR:」,並在構建失敗時發生這種情況,但這種解決方案很粗糙,我們無法確定EF是否失敗或某個其他進程具有類似的日誌條目。
任何建議更好的解決?無論是使migrate.exe行爲的一種方式,還是讓Team City明白失敗特定於migrate.exe的方法。
我爲此提出了一個錯誤。 – Pawel 2012-04-24 17:27:58
鏈接?我不確定它是否被認爲是不正確的行爲。 – jslatts 2012-04-25 17:33:16
不幸的是,錯誤數據庫不公開。我相信這是一個錯誤 - 你的情景清楚地表明,區分錯誤和非錯誤的情況是有價值的。 – Pawel 2012-04-25 18:07:02