Entity Framework Core 在初始创建后添加新迁移

问题描述

我有 ASP.Net Core 项目,作为 ORM,它基于 Entity Framework Core 3.1.8 版。可以从 CLor 包管理器控制台进行首次初始创建时迁移和更新,不用担心。问题是当我为现有实体添加新表或新属性时,无法添加新迁移。异常详情如下。

PM> dotnet ef 迁移添加“newone” 构建开始... 构建成功。 System.NullReferenceException:未将对象引用设置为对象的实例。 在 Microsoft.EntityFrameworkCore.Update.Internal.SharedTableEntryMap1.GetMainEntry(IUpdateEntry entry) at Microsoft.EntityFrameworkCore.Update.Internal.SharedTableEntryMap1.GetOrAddValue(IUpdateEntry entry) 在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffData(TableMapping 源,TableMapping 目标,DiffContext diffContext) 在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(TableMapping source,TableMapping target,DiffContext diffContext)+MoveNext() 在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection[T](IEnumerable1 sources,IEnumerable1 目标,DiffContext diffContext,Func4 diff,Func3 add,Func3 remove,Func4[] 谓词)+MoveNext () 在 System.Linq.Enumerable.ConcatIterator1.MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable1 个操作,DiffContext diffContext) 在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDifferences(IModel 源,IModel 目标) 在 Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName,String rootNamespace,String subNamespace,String language) 在 Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name,String outputDir,String contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name,String contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.c__DisplayClass0_0.<.ctor>b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) 未将对象引用设置为对象的实例。

我的 DbContext 和 DbContextFactory 代码片段也在下面

//我的 DbContextFactory CreateDbContext 方法

  public DataContext CreateDbContext(string[] args)
    {
        var env = GetEnvironment();
        var connectionStr = SetDatabaseConnectionString(env); 
        var optionsBuilder = new DbContextOptionsBuilder<DataContext>();
         
        optionsBuilder.UseSqlServer(Environment.GetEnvironmentVariable(connectionStr,EnvironmentVariableTarget.Machine)); 
        optionsBuilder.EnableSensitiveDataLogging();

        return new DataContext(optionsBuilder.Options,null);

    }

//我的 DbContext 构造函数

public DataContext(DbContextOptions<DataContext> options,IHttpContextAccessor httpContextAccessor) : base(options)
    {
        _logger = LogManager.GetCurrentClassLogger();
        _logger.Info("Domain User : SYSTEM Details : DataContext initialized");
        Database?.SetCommandTimeout(5000);//TODO : fetch from config
        _httpContextAccessor = httpContextAccessor;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)