Entity framework core 实体框架核心2.1添加迁移系统。NullReferenceException:对象引用未设置为对象的实例

Entity framework core 实体框架核心2.1添加迁移系统。NullReferenceException:对象引用未设置为对象的实例,entity-framework-core,asp.net-core-2.1,Entity Framework Core,Asp.net Core 2.1,在尝试运行添加迁移时,通常会出现以下错误。 我们使用实体框架核心2.1 System.NullReferenceException:对象引用未设置为对象的实例。 位于Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping.c.b_uuu10_0(IEntityType t) 在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1源,Func2谓词) 位于Micro

在尝试运行添加迁移时,通常会出现以下错误。 我们使用实体框架核心2.1

System.NullReferenceException:对象引用未设置为对象的实例。 位于Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping.c.b_uuu10_0(IEntityType t) 在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1源,Func
2谓词) 位于Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.GetSortedProperties(表映射目标) 在Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.Add(TableMapping目标,DiffContext DiffContext)+MoveNext()中 在Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationModelDifference.DiffCollection[T](IEnumerable
1源、IEnumerable
1目标、DiffContext DiffContext、Func
4 diff、Func
3添加、Func
3删除、Func
4[]谓词)+MoveNext() Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.Sort(IEnumerable
1操作,DiffContext)中的System.Linq.Enumerable.ConcatIterator
1.MoveNext()
位于Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(字符串迁移名称、字符串根命名空间、字符串子命名空间、字符串语言)
位于Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串名称、字符串输出目录、字符串上下文类型)
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称、字符串输出目录、字符串上下文类型)
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0()中
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作)

对象引用未设置为对象的实例。

问题在于DataContextModelSnapshot文件与实体类之间不匹配。通常这是由于DataContextModelSnapshot文件中的合并冲突造成的

仅仅通过查看DataContextModelSnapshot文件的历史记录就很难找到不匹配的情况。 因此,最简单的解决办法是:

  • 删除快照文件
  • 运行添加迁移“迁移名称”(这是 要从头开始创建快照文件,还要创建 新的迁移文件)
  • 删除新创建的迁移文件 手动
  • 现在,您可以开始为新更改添加迁移