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

.NET Framework迁移.NET Core 6:无法读取appsettings.json连接字符串

解决.NET Framework到.NET Core 6迁移中连接字符串读取失败的问题

问题原因

原PayMyRentEntities类的无参构造函数使用EF6针对.NET Framework的语法base("name=PayMyRentEntities"),该逻辑默认从web.config读取连接字符串,但.NET Core 6使用appsettings.json作为配置文件,两者配置读取机制不兼容,导致无法找到指定连接字符串。

解决方案

1. 安装必要NuGet包

确保项目安装以下包:

  • EntityFramework(EF6核心包)
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json
  • (可选)Microsoft.Data.SqlClient(替换旧的System.Data.SqlClient,提升兼容性)

2. 修改PayMyRentEntities类

添加支持传入连接字符串的构造函数,同时适配无参构造函数的配置读取逻辑:

public partial class PayMyRentEntities : DbContext
{        
    // 适配.NET Core的无参构造函数
    public PayMyRentEntities()
        : base(GetConnectionString())
    {
    }

    // 支持手动传入连接字符串的构造函数
    public PayMyRentEntities(string connectionString)
        : base(connectionString)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Category> Categories { get; set; }
    public virtual DbSet<Hospital> Hospitals { get; set; }
    public virtual DbSet<LookupType> LookupTypes { get; set; }
    public virtual DbSet<LookupValue> LookupValues { get; set; }

    // 从appsettings.json读取连接字符串的私有方法
    private static string GetConnectionString()
    {
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .Build();
        return configuration.GetConnectionString("PayMyRentEntities");
    }
}

3. (推荐)用依赖注入管理DbContext

在Program.cs中配置依赖注入,将连接字符串注入到PayMyRentEntities:

var builder = WebApplication.CreateBuilder(args);

// 读取appsettings.json中的连接字符串
var connectionString = builder.Configuration.GetConnectionString("PayMyRentEntities");

// 注册DbContext到依赖注入容器
builder.Services.AddScoped<PayMyRentEntities>(sp => new PayMyRentEntities(connectionString));

// 其他服务配置...

var app = builder.Build();

// 中间件配置...

app.Run();

4. 检查appsettings.json属性

右键appsettings.json文件 → 属性 → 设置“复制到输出目录”为如果较新则复制或始终复制,确保运行时能读取到配置文件。

5. (可选)更新SQL提供程序

将appsettings.json中连接字符串的provider=System.Data.SqlClient替换为provider=Microsoft.Data.SqlClient,并安装Microsoft.Data.SqlClient包,提升在.NET Core环境下的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:15:27