You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法创建ApplicationDatabaseContext实例:删除迁移及数据库后Add-Migration报错

解决Add-Migration报错“Unable to create an object of type 'ApplicationDatabaseContext'”的方案

以下是几种可行的解决办法,按优先级尝试:

1. 添加设计时工厂类

在项目中创建一个实现IDesignTimeDbContextFactory<ApplicationDatabaseContext>的类,让EF Core能直接创建上下文实例:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System.IO;

public class ApplicationDatabaseContextFactory : IDesignTimeDbContextFactory<ApplicationDatabaseContext>
{
    public ApplicationDatabaseContext CreateDbContext(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();

        var optionsBuilder = new DbContextOptionsBuilder<ApplicationDatabaseContext>();
        optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));

        return new ApplicationDatabaseContext(optionsBuilder.Options);
    }
}

注意替换DefaultConnection为你配置文件里实际的连接字符串名称。

2. 确认启动类的上下文注册正确

如果是ASP.NET Core项目,检查Program.cs(或Startup.cs)里是否正确注册了上下文:

  • 确保有类似代码:
builder.Services.AddDbContext<ApplicationDatabaseContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
  • 执行Add-Migration时,命令行工作目录要切换到包含appsettings.json的项目根目录

3. 直接在命令中指定连接字符串

绕开依赖注入问题,执行命令时直接传入连接字符串:

Add-Migration InitialCreate -Connection "你的SQL Server连接字符串"

4. 检查EF Core相关依赖版本

  • 确保项目已安装Microsoft.EntityFrameworkCore.Design包,且版本和其他EF Core包一致
  • 执行dotnet tool update --global dotnet-ef更新dotnet ef工具到最新版本

内容的提问来源于stack exchange,提问作者Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:11:26