Continuous integration 实体框架4.3.1 Migrate.exe非零退出代码

Continuous integration 实体框架4.3.1 Migrate.exe非零退出代码,continuous-integration,teamcity,entity-framework-4.3,Continuous Integration,Teamcity,Entity Framework 4.3,作为持续集成和部署自动化的一部分,我们正在使用Entity Framework 4.3.1的migrate.exe工具从TeamCity构建服务器运行数据库迁移。我们遇到的其中一个问题是,migrate.exe工具在失败时不会发出非零退出代码: C:\<path>\packages\EntityFramework.4.3.1\tools>migrate.exe AppContext /startupdirectory:C:\<path>\bin\Debug /sta

作为持续集成和部署自动化的一部分,我们正在使用Entity Framework 4.3.1的migrate.exe工具从TeamCity构建服务器运行数据库迁移。我们遇到的其中一个问题是,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
C:\\packages\EntityFramework.4.3.1\tools>migrate.exe AppContext/startupdirectory:C:\\bin\Debug/startupconfigurationfile:C:\\Web.config/verbose
应用显式迁移:201202212004585_UpdateTable
详细:ALTER TABLE[TableA]DROP约束[FK\U TableA\U TableB]
System.Data.Entity.Migrations.Design.ToolingException:“FK_TableA_TableB”不是约束条件。
无法删除约束。请参阅前面的错误。
位于System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner)
位于System.Data.Entity.Migrations.Design.ToolingFacade.Update(字符串targetMig
定量(布尔力)
在System.Data.Entity.Migrations.Console.Program.Run()中
位于System.Data.Entity.Migrations.Console.Program.Main(字符串[]args)
错误:“FK_TableA_TableB”不是约束。
无法删除约束。请参阅前面的错误。
C:\\packages\EntityFramework.4.3.1\tools>echo%errorlevel%
0
这会导致Team City在迁移失败且应该失败时将构建传递为“成功”

我们的临时解决办法是在生成日志中grep“ERROR:”并在出现这种情况时使生成失败,但这个解决方案很粗糙,我们无法判断EF是否失败,或者其他具有类似日志项的进程是否失败

有没有更好的解决办法的建议?使migrate.exe正常运行的方法或使Team City了解故障是migrate.exe特有的方法。

此版本还包括对Beta 2中发现的以下错误的修复:

  • 迁移:发生故障后,Migrate.exe不会设置错误代码

此错误已在EF 5 RC中修复:
-对用户使用除“dbo”之外的默认模式的登录会导致运行时失败

Link?我不确定这是否被认为是不正确的行为。不幸的是,错误数据库不是公开的。我相信这是一个bug-您的场景清楚地表明,在区分错误和非错误情况时有一个值。这似乎在v6.0.21010.0中再次存在。这似乎在v6.0.21010.0中再次存在。@MikeCole感谢您的报告-为此创建了一个工作项:@MikeCole-刚刚签入了EF6的修复()。请注意,它并没有加入到今天早些时候发布的EF6.1-alpha中,但应该包含在下一个版本中。是这样吗?如果是这样的话,你知道什么时候可以发布吗?@MikeCole-如果你看这个bug,有一个Release字段指向一个bug正在修复的版本。在本例中,它是6.1.0