C# 实体框架:“数据库更新”中的错误“无法将参数绑定到参数“路径”

C# 实体框架:“数据库更新”中的错误“无法将参数绑定到参数“路径”,c#,asp.net,entity-framework-6,C#,Asp.net,Entity Framework 6,我在尝试更新数据库时遇到此错误 更新数据库:无法将参数绑定到参数“Path”,因为它 是空的。第1行字符数:2 更新数据库 CategoryInfo:InvalidData::[Update Database],ParameterBindingValidationException FullyQualifiedErrorId:参数ArgumentValidationErrorNullNotAllowed,更新数据库 你能给我指出解决问题的正确方向吗? 谢谢GitHub上已报告此错误,请参阅问题。

我在尝试更新数据库时遇到此错误

更新数据库:无法将参数绑定到参数“Path”,因为它

是空的。第1行字符数:2

更新数据库 CategoryInfo:InvalidData::[Update Database],ParameterBindingValidationException FullyQualifiedErrorId:参数ArgumentValidationErrorNullNotAllowed,更新数据库 你能给我指出解决问题的正确方向吗?
谢谢

GitHub上已报告此错误,请参阅问题。它是由1290期的记者修复的,可以在夜间版本中使用。该项目最初计划于每年11月底/12月初举行,但后来被移至一个新的地点。截至撰写本文时,两个里程碑都没有到期日

该错误只影响EF迁移,并且仅适用于将Web应用程序项目用作启动项目,即使您的实体和上下文位于不同的项目中。如果影响多个命令,则启用迁移、添加迁移、更新数据库和获取迁移,因为它们调用包含错误的代码

如果需要使用迁移,请降级到版本6.2.0或使用已确定的解决方法之一

如果降级,请确保对解决方案中使用它的所有项目执行降级。如果任何项目引用了6.3.0包,则以6.3.0 PowerShell模块为准。您可以将Manage NuGet软件包用于解决方案。。。来自解决方案节点的命令,以帮助确定6.3.0可能仍安装在任何项目中的位置。完成后,您需要关闭并重新打开项目,以便加载6.2.0的PowerShell模块

变通办法

如果您想要/需要使用6.3版,并且遇到此错误,可以尝试以下几种解决方法。以下是我能够总结的内容:

将控制台应用程序用作启动项目。 由于错误只影响Web应用程序项目,因此导致错误的条件分支永远不会执行。如果您已经有一个具有正确连接字符串的控制台应用程序,那么可以使用它。如果没有,可以为此添加一个虚拟项目

注意:如果您的连接字符串包含| DataDirectory |,这将不起作用,因为它避免指定-data dir参数以避免错误

使用一个。 虽然这是可行的,但对于很多项目来说,这可能是不可能的,因为在生产中通常不允许预发布版本。但是,如果您的产品发布还有几个月的时间,如果您希望能够及时获得一个可用的发布,那么这可能是一个选择

添加引用夜间生成的虚拟项目。 与使用夜间构建类似,您在未使用的项目中引用它以加载固定的PowerShell模块。您仍然可以在应用程序使用的项目中引用发布的版本

在共享缓存位置修改本地包。 警告:对于团队或CI/CD环境来说,这不是一个站得住脚的解决方案,但对于希望在等待下一个版本时使用快速破解的个人来说,这可能没问题,如果共享缓存被清除,则不介意重新应用它

如果在项目文件中使用PackageReference标记,则程序集将在共享缓存位置中引用,通常在%USERPROFILE%\.nuget\packages下引用。您可以在那里修改文件,如问题中所示,所有通过PackageReference标记使用包的项目都将使用该文件。如果您使用的是packages.config,则必须在packages文件夹中对其进行修改,这就是问题所在


我已经测试了所有这些变通方法,并取得了成功。

EF 6.3?请参阅,它已修复,正在等待新版本。尝试解决方法或使用6.2,直到6.3.1发布。降级到6.2,但W问题仍然存在,解决方法是针对asp.net core的:/无论如何,谢谢不,我链接的帖子中没有关于core的内容。请确保删除解决方案中对6.3的所有引用,然后关闭并重新打开该解决方案,因为它将在任何地方取代6.2,并且如果已加载6.3,它将不会加载6.2工具。我的糟糕降级成功了!谢谢,如果您将其作为答案发布,我将接受它,只是为了让您获得帮助我的声誉: