2012-02-07 152 views
2

从EF 4.2升级并迁移到EF 4.3并启用迁移后,重新启动Visual Studio以及所有内容,每当我尝试调用Update-Database/Add-Migration时,我都会得到:实体框架4.3更新数据库时的迁移异常

System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.ArgumentException:
该参数不正确。 (从HRESULT异常:80070057 (E_INVALIDARG))内部异常堆栈跟踪的
--- ---完
在System.RuntimeType.InvokeDispMethod(字符串名称,的BindingFlags invokeAttr,对象目标,对象[]指定参数时,布尔[ ] byrefModifiers,Int32 culture,String [] namedParameters)
at System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs, ParameterModifier []修饰符,CultureInfo culture,String [] namedParams)
at System.Management.Automation.ComMethod.InvokeMethod(PSMethod method,Object [] arguments)
Upda te-Database:调用目标引发异常。
在行:1个字符:1
+更新数据库
+ ~~~~~~~~~~~~~~~
+ CategoryInfo:OperationStopped:(例外具有b个......的调用。 :字符串)[更新,数据库],RuntimeException的
+ FullyQualifiedErrorId:异常已通过调用的目标引发异常,更新,数据库

我试图清理整个项目,删除EF和迁移和包文件夹。并从一开始就这样做,而且还是一样的错误!

任何人都面临同样的错误?或者有这个解决方案?

回答

5

如果你有单独的项目背景和迁移,您需要使用外接迁移和更新数据库

same error的-StartupProjectName“YourProject”选项,在4.3测试版。我也在4.3版本中遇到过它。

+1

我也注意到了这一点。但在我的情况有点不同。 我在一个项目中有我的DbContext和Migrations。但这不是启动项目。添加-StartupProjectName也解决了这个问题。真的很烦人每次输入这个。 – 2012-02-12 14:37:42

+0

是的,当Ef Team确认这个我觉得奇怪的4.3之前的版本没有遭受这个! – Stacker 2012-02-13 14:48:53

3

而不是使用的PowerShell命令,你可以控制通过代码迁移,然后告诉它你的装配和背景是:

var configuration = new DbMigrationsConfiguration() { 
    MigrationsAssembly = typeof(YourMigrations).Assembly, 
    ContextType = typeof(YourContext) 
}; 

此后,您可以脚本出来或自动运行它使用DbMigrator类:

var migrator = new DbMigrator(configuration); 
var scripter = new MigratorScriptingDecorator(migrator); 
string script = scripter.ScriptUpdate(null, null); 
+0

即时对此非常感兴趣,请您解释更多? – Stacker 2012-02-15 02:04:29

+0

您可能只想查看[DbMigrator的MSDN文档](http://msdn.microsoft.com/zh-cn/library/system.data.entity.migrations.dbmigrator(v = vs.103).aspx ) – 2012-02-17 17:48:05

相关问题