Update-Database时的实体框架4.3迁移异常

时间:2012-02-07 09:52:35

标签: entity-framework ef-code-first

从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文件夹并从头开始执行并仍然出现同样的错误!

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

2 个答案:

答案 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);