c# - 字符串参数 'migrationId' 不能为空

标签 c# asp.net-mvc entity-framework-core entity-framework-migrations

如果这个问题已经得到解答,请提前致歉,但老实说,我已经深入挖掘,找不到与此错误相关的任何信息。

简而言之,我无法在我的 ASP.NET Core 1.1.2 项目中使用代码优先对我的数据库进行任何更新。它抛出一个异常,因为它缺少一个我猜与 PMC 无关的参数。

使用“更新数据库”时的错误消息:

Error-Image-Update-Database

用于交叉检查 Google 的文本 ;-)

    System.ArgumentException: The string argument 'migrationId' cannot be empty.
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
The string argument 'migrationId' cannot be empty.

Migrations 文件夹与我的“_EFMigrationsHistory”表相同(忽略计划更新的最后一次迁移):

enter image description here

我什至删除了 Migrations 文件夹和“_EFMigrationsHistory”表并重新开始,但出现了同样的错误。我还打算测试“v2.0.0-preview2-final”,以防万一它是一个错误,但遗憾的是我的 VS 版本只采用发布版本,显然你需要 15.3。

版本信息:

  • Visual Studio Enterprise 2017 - 15.2 (26430.16) 版
  • Entity Framework 核心 v1.1.2
  • ASP.NET Core v1.1.2

任何指针将不胜感激。

编辑

@大卫G

用于dotnet ef 数据库更新

enter image description here

Update-Database -TargetMigration AdUserImage

enter image description here

最佳答案

感谢@DavidG 给我指明了正确的方向,我终于解决了这个问题,非常感谢。

我意识到,当我在我的 PC 上检查已安装的 SDK 时,我注意到我已经安装了 Dotnet 2.0.0 的预发布版本(老实说,我不记得这样做了)。从 PMC 检查 Dotnet 版本 (dotnet --version) 确认 VS 使用的是 2.0.0。卸载所有 Dotnet SDK 和运行时,然后从 here 重新安装最新版本的 Dotnet(1.1.2) 之后, Update-Database 正常工作......很少!

关于c# - 字符串参数 'migrationId' 不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45282303/

相关文章:

asp.net-mvc - 项目上未安装 EntityFramework 包

javascript - 如何使用 jquery/javascript 从 ontextchanged 事件获取文本框值

c# - 使用 '[' 和 ']' 字符作为模式/表名称时如何避免 SQL 注入(inject)?

javascript - 回发后保留计算的 jQuery 总数

C# 使用 tcp 和 udp 协议(protocol)

c# - Entity Framework 核心: Multiple Relationships between Users and Organizations

c# - EF Core 规范模式添加所有列以使用自定义规范对数据进行排序

sql-server - Entity Framework Core 与 ASP.NET Core Web API 和 SQL Server (+ Xamarin.Forms)

c# - VS Code 不为使用 net452 Framework 为 .NET Core 编译的项目加载 PDB

c# - 使用 HttpClient 上传图片