实体框架核心2.1添加迁移System.NullReferenceException:对象引用未设置为对象的实例

时间:2020-11-04 08:54:37

标签: entity-framework-core asp.net-core-2.1

当我们尝试运行add-migration时,会遇到以下错误。 我们使用Entity Framework Core 2.1。

System.NullReferenceException:对象引用未设置为对象的实例。 在Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping。<> c.b__10_0(IEntityType t) 在System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable 1 source, Func 2谓词)处 在Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetSortedProperties(TableMapping目标) 在Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Add(TableMapping目标,DiffContext diffContext)+ MoveNext() Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection [T](IEnumerable 1 sources, IEnumerable 1个目标,DiffContext diffContext,Func 4 diff, Func 3个添加,Func 3 remove, Func 4 []个谓词)+ MoveNext () 在System.Linq.Enumerable.ConcatIterator 1.MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable 1操作中,DiffContext diffContext) 在Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName,String rootNamespace,String subNamespace,String语言) 在Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串名称,字符串outputDir,字符串contextType) 在Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称,字符串outputDir,字符串contextType) 在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase。<> c__DisplayClass3_0`1.b__0() 在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action操作) 对象引用未设置为对象的实例。

1 个答案:

答案 0 :(得分:1)

此问题是DataContextModelSnapshot文件与您的实体类之间的不匹配。通常,这是由于DataContextModelSnapshot文件中的合并冲突而发生的。

仅通过浏览DataContextModelSnapshot文件的历史记录很难找到不匹配的情况。 因此,最简单的解决方案是;

  • 删除快照文件。
  • 运行Add-Migration'Migration_Name'(这是 从头开始创建快照文件,并创建一个 新的迁移文件)。
  • 删除新创建的迁移文件 手动。
  • 现在您可以开始为新更改添加“添加迁移”。