4

継続的インテグレーションとデプロイの自動化の一環として、Entity Framework 4.3.1のmigrate.exeツールを使用して、TeamCityビルドサーバーからデータベースの移行を実行しています。私たちが遭遇したこれらの問題の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

これにより、移行が失敗し、失敗するはずの場合に、TeamCityはビルドを「成功」として渡します。

一時的な回避策は、「ERROR:」のビルドログをgrepし、これが発生したときにビルドを失敗させることですが、この解決策は大雑把であり、EFが失敗したか、同様のログエントリを持つ他のプロセスかを判断できません。

より良い回避策のための提案はありますか?merge.exeを動作させる方法、または失敗がmigrate.exeに固有のものであることをTeamCityに認識させる方法のいずれか。

4

2 に答える 2

1

このバグはEF5RCで修正されました。-ユーザーに「dbo」以外のデフォルトスキーマを持つログインを使用すると、ランタイムエラーが発生します

于 2012-05-23T12:21:37.040 に答える
1

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

このリリースには、ベータ2で見つかった次のバグの修正も含まれています。

  • ..。
  • 移行:Migrate.exeは失敗後にエラーコードを設定しません
于 2012-05-21T23:47:59.950 に答える