尝试更新数据库时出现此错误
Update-Database:无法将参数绑定到参数“ Path”,因为
为空。在第1行:char:2
- 更新数据库
- CategoryInfo:InvalidData :( :) [Update-Database],ParameterBindingValidationException
- FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,更新数据库
您能指出我正确的方向来解决问题吗? 谢谢
答案 0 :(得分:1)
已在GitHub上报告了此错误(请参阅问题1290,1306,1348)。它是固定的(由1290期的记者提供),可在每晚的版本中使用。它最初计划在6.4.0 release(计划在this comment的11月下旬/ 12月初)使用,但此后已移至6.3.1 release。撰写本文时,两个里程碑都没有截止日期。
该错误仅影响EF迁移,并且仅适用于将Web应用程序项目用作启动项目(即使您的实体和上下文位于不同的项目中)。如果会影响多个命令(Enable-Migrations
,Add-Migration
,Update-Database
和Get-Migrations
),因为它们会调用包含该错误的代码。
如果您需要使用迁移,请降级到版本6.2.0 或使用已确定的解决方法之一。
如果降级,请确保对解决方案中使用它的所有项目都进行降级。如果 any 项目引用了6.3.0程序包,则6.3.0 PowerShell模块将优先。您可以使用解决方案节点中的“管理解决方案的NuGet软件包...”命令来帮助确定在任何项目中仍可能安装6.3.0的位置。完成后,您需要关闭并重新打开项目才能加载6.2.0的PowerShell模块。
解决方法
如果您希望/需要使用版本6.3,并且遇到此错误,可以尝试几种解决方法。这是我能够汇总的内容:
由于该错误仅影响Web应用程序项目,因此永远不会执行导致该错误的条件分支。如果您已经具有带有正确连接字符串的控制台应用程序,则可以使用它。如果没有,您可以为此添加一个虚拟项目。
请注意:如果您的连接字符串包含|DataDirectory|
,则此操作将无效,因为它避免指定--data-dir
参数以避免该错误。
尽管这可行,但是对于许多项目而言,它可能是一个不起眼的事情,因为在生产中通常不允许使用预发布版本。但是,如果您的生产版本还需要几个月的时间,那么如果您愿意继续工作并希望及时发布可用的版本,则可以选择。
类似于使用夜间构建,您在未使用的项目中引用它以加载固定的PowerShell模块。您仍将在应用程序使用的项目中引用发布的版本。
警告:对于团队(或CI / CD环境)而言,这不是一个可行的解决方案,但对于想要在等待下一个版本时使用快速hack并且不介意重新申请的个人来说,这可能是好的如果共享缓存被清除,则为
。如果您在项目文件中使用PackageReference
标签,则程序集将在共享缓存位置(通常在%USERPROFILE%\.nuget\packages
下)被引用。您可以在其中修改文件,如问题1290所示,该文件将通过PackageReference
标记供所有使用该软件包的项目使用。如果您使用的是packages.config
,则必须在packages
文件夹中进行修改,即more likely to be lost。
我已经对所有这些变通方法进行了测试,并取得了成功。