ef添加迁移出错

时间:2015-05-09 12:15:31

标签: entity-framework asp.net-mvc-5 ef-migrations

我有几个类文件。但是现在我添加了新的模型类并尝试键入add-migration InitialCreate。但我收到以下错误。

PM> add-migration InitialCreate
Exception calling "LoadFrom" with "1" argument(s): "Could not load file or assembly 'file:///C:\Users\user\Documents\Visual Studio 2013\Pro
jects\DigitalHealthWebPrev\packages\EntityFramework.6.1.3\tools\EntityFramework.PowerShell.Utility.dll' or one of its dependencies. Operati
on is not supported. (Exception from HRESULT: 0x80131515)"
At C:\Users\user\Documents\Visual Studio 2013\Projects\DigitalHealthWebPrev\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:780 c
har:62
+     $utilityAssembly = [System.Reflection.Assembly]::LoadFrom <<<< ((Join-Path $ToolsPath EntityFramework.PowerShell.Utility.dll))
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

You cannot call a method on a null-valued expression.
At C:\Users\user\Documents\Visual Studio 2013\Projects\DigitalHealthWebPrev\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:781 c
har:50
+     $dispatcher = $utilityAssembly.CreateInstance <<<< (
    + CategoryInfo          : InvalidOperation: (CreateInstance:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Exception calling "CreateInstanceFrom" with "8" argument(s): "Could not load file or assembly 'file:///C:\Users\user\Documents\Visual Studi
o 2013\Projects\DigitalHealthWebPrev\packages\EntityFramework.6.1.3\tools\EntityFramework.PowerShell.dll' or one of its dependencies. Opera
tion is not supported. (Exception from HRESULT: 0x80131515)"
At C:\Users\user\Documents\Visual Studio 2013\Projects\DigitalHealthWebPrev\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:809 c
har:31
+     $domain.CreateInstanceFrom <<<< (
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

PM>

9 个答案:

答案 0 :(得分:15)

使用程序包管理器,您需要重新安装Entity Framework:

  

Uninstall-Package EntityFramework -Force

然后为每个项目安装它:

  

Install-Package EntityFramework

然后别忘了重新启动工作室。

https://stackoverflow.com/a/14994432/1845408

答案 1 :(得分:3)

改用命令EntityFramework6\add-migration {migration name}。 Microsoft更改了命令的名称。

答案 2 :(得分:1)

今天我的情况略有不同,我在这里详细说明可能有助于某人的情况。该错误引用了我的一个程序集,而包含EF DbContext的程序集依赖于该程序集 我解决了它将引用的程序集设置为“Copy Local”“true”,因此它在构建迁移时会生成本地副本,因此能够找到它。

答案 3 :(得分:1)

您需要重新安装Entity Framework:

答案 4 :(得分:1)

确保VS处于管理员模式

答案 5 :(得分:1)

只需重新启动Visual Studio并清理解决方案,然后重新构建即可。

答案 6 :(得分:0)

(解决方案文件夹)/packages/EntityFramework.6.1.3/tools/中的dll丢失了。

我会尝试的事情:

  1. Nuget将保留.nupkg的副本,您可能会在其中找到丢失的文件(((解决方案文件夹)/packages/EntityFramework.X.Y.Z /)(以zip格式打开nupkg)
  2. 如果没有,可能您会幸运地在此处https://www.nuget.org/packages/EntityFramework手动重新下载软件包(请确保您下载了正确的软件包。在您的情况下为6.1.3)

如果这样不起作用,您可以重试上述解决方案之一,即完全删除并重新安装EF,但请确保为每个项目安装相同的版本。

似乎还有一些版本不包含这些文件。例如,在编写此答案时,6.3.0实际上不包括6.1.3所需要的dll。我也成功地将dll从6.1.3的较旧版本复制到了6.3.1的较新版本中(可能会发出警告,但通常会按预期运行)。

答案 7 :(得分:0)

我去了“为解决方案管理Nuget软件包...”并更新了我所有的软件包。这对我有用。

然后我遇到另一个错误Cannot bind argument to parameter 'Path' because it is null

在Package Manager控制台中运行任何EF命令之前,将另一个项目设置为我的Web应用程序以外的启动项目对我来说是有效的。

答案 8 :(得分:0)

在我的情况下,它是主项目和包含DbContext的项目之间不同的实体框架版本。 我刚刚将两个项目中的软件包的版本更新为v6.4.4