2012-04-23 54 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'默认架构的登录名导致运行时间故障