2012-04-23 50 views
4

我們使用實體框架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的方法。

+0

我爲此提出了一個錯誤。 – Pawel 2012-04-24 17:27:58

+0

鏈接?我不確定它是否被認爲是不正確的行爲。 – jslatts 2012-04-25 17:33:16

+0

不幸的是,錯誤數據庫不公開。我相信這是一個錯誤 - 你的情景清楚地表明,區分錯誤和非錯誤的情況是有價值的。 – Pawel 2012-04-25 18:07:02

回答

1

http://blogs.msdn.com/b/adonet/archive/2012/05/15/ef5-release-candidate-available-on-nuget.aspx

此版本還包括在Beta 2中發現了以下錯誤的修復:

  • ...
  • 遷移:Migrate.exe不會設置錯誤代碼的失敗後
+0

這似乎在v6.0.21010.0中再次存在。 – 2013-11-22 23:06:30

+1

@MikeCole謝謝報告 - 爲此創建了一個工作項目:https://entityframework.codeplex.com/workitem/1859 – Pawel 2013-11-23 00:41:49

+1

@MikeCole - EF6的修復程序剛剛被檢入(https://entityframework.codeplex.com/ SourceControl /變更/ 5ed07059bcae71b39dce14d0b3ee6ba62de9a188)。請注意,它沒有製作成今天早些時候發佈的EF6.1-alpha,但應包含在下一個版本中。 – Pawel 2013-12-20 18:20:43

1

此錯誤在EF 5 RC中修復: - 對用戶使用具有非'dbo'默認架構的登錄名導致運行時間故障