实体框架代码第一次迁移错误

Raf*_*rty 25 .net entity-framework exception-handling ef-code-first

我是MVC 4和实体框架的新手,当我从包管理器控制台运行此命令时:

Enable-Migrations -ContextTypeName MyFirstMvcApp.Models.InventoryDbContext
Run Code Online (Sandbox Code Playgroud)

Join-Path:无法将参数绑定到参数'Path',因为它为null.

我收到以下错误:

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:363 char:27
+     $toolsPath = Join-Path <<<<  $installPath tools
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:392 char:73
+     $utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path <<<<  $toolsPath EntityFramework.PowerShell.Utility.dll))
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand

You cannot call a method on a null-valued expression.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:393 char:50
+     $dispatcher = $utilityAssembly.CreateInstance <<<< (
    + CategoryInfo          : InvalidOperation: (CreateInstance:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:426 char:19
+         (Join-Path <<<<  $runner.ToolsPath EntityFramework.PowerShell.dll),
    + CategoryInfo          : InvalidData: (:) [Join-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
Run Code Online (Sandbox Code Playgroud)

我该如何解决?请注意,我使用的是带有SP1的Visual Studio 2010 Ultimate,我在此链接中安装了MVC4 .

Raf*_*rty 39

通过卸载和重新安装实体框架来修复它.为了别人的利益,这里有命令......

卸载:

PM> Uninstall-Package EntityFramework -Force

卸载后,重新安装EntityFramework:

PM> Install-Package EntityFramework -Pre

那里!这是固定的.虽然我还是不知道是什么原因引起了这个问题.

  • 适用于特定版本的“ PM&gt;安装软件包EntityFramework -Pre -Version 5.0.0” (3认同)

Ays*_*ter 21

Visual studio 2019: Uninstall-Package EntityFramework -Force

then

Install-Package EntityFramework -Pre -Version 6.2.0

something is up with v6.3.0

  • 从v6.3.0开始,恢复到v6.2.0也是我解决此错误的唯一方法。它在vs2017和vs2019中都发生,它必须与上面的@antoine答案有关。 (3认同)

小智 13

我面临着同样的问题,这就是我解决问题的方式,

我使用的是Visual Studio 2019,因此我安装了最新的Entity Framework 6.3.0(stable),当我运行Enable-Migrations命令时遇到了问题,我尝试重新安装Entity Framework,但无法正常工作我已经从Nuget软件包管理器安装了旧版本6.2.0,显然可以正常工作。


Nem*_*sis 9

在这里尝试了所有的东西。我个人讨厌一开始就不知道问题出在哪里而解决问题。在启动项目是Web应用程序的情况下,在论坛中进行深入研究,这似乎是版本6.3.0中引起的已知错误。他们已经在日常构建中对其进行了修复。因此,要解决该问题,您需要安装它。

首先,卸载软件包:

PM> Uninstall-Package EntityFramework -Force
Run Code Online (Sandbox Code Playgroud)

然后安装最新的每日版本(在我的情况下为以下版本)

PM> Install-Package EntityFramework -Version 6.4.0-preview1-19506-01
Run Code Online (Sandbox Code Playgroud)

  • 回滚到6.2.0也可以,但是这个答案应该更高。感谢您的调查。 (2认同)

小智 5

我在从“6.2.0”升级到 EntityFramework“6.3.0”时遇到了这个问题。问题和解决方法可以在此处找到EF 6.3.0 PMC commands throw ParameterBindingValidationExceptionwhen Startup Project is a Web App

当你有多个项目并且你将一个 ASP.NET 项目设置为 Startup 项目时就会出现问题

链接建议的解决方法:

如果您向解决方案添加了一个新的虚拟控制台应用程序并将 EntityFramework 的每日构建安装到其中,则将使用包含修复程序的命令版本。这些命令适用于引用 EF 6.3 的项目。

个人解决方案:

将启动项目设置为非 ASP.NET 项目解决了我的问题。请注意,如果您正在使用连接字符串,则必须将它们复制到相关项目的配置文件中。