从EF 4.2升级到迁移到EF 4.3并启用迁移,重新启动Visual Studio和所有内容,每当我尝试调用Update-Database / Add-Migration时,我都会得到:
System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.ArgumentException:
参数不正确。 (HRESULT的例外情况:0x80070057 (E_INVALIDARG))
---内部异常堆栈跟踪结束---
在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,Int32 culture,String [] namedParameters)
在System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs, ParameterModifier []修饰符,CultureInfo文化,String [] namedParams)
在System.Management.Automation.ComMethod.InvokeMethod(PSMethod方法,Object []参数)
Update-Database:调用目标抛出了异常 在行:1 char:1
+ update-database
+ ~~~~~~~~~~~~~~~ + CategoryInfo:OperationStopped :(异常有b ...一个调用。:String)[Update-Database],RuntimeException
+ FullyQualifiedErrorId:调用目标抛出了异常。,Update-Database
我尝试清理整个项目,删除ef和migration and packages文件夹并从头开始执行并仍然出现同样的错误!
任何人都面临同样的错误?或者有解决方案吗?
答案 0 :(得分:5)
如果您在单独的项目中有上下文和迁移,则需要使用-StartupProjectName“YourProject”选项add-migration和update-database
same error是4.3 beta。我在4.3版本中也遇到过它。
答案 1 :(得分: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);