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

ASP.NET Core中SqlServerConnection类的使用及连接字符串传入问题

解决SqlServerConnection构造函数无法传入连接字符串的问题

常见修复方案

1. 检查类名是否正确

你大概率是写错了连接类的名称,.NET官方提供的SQL Server连接类是SqlConnection(需引用System.Data.SqlClient或Microsoft.Data.SqlClient NuGet包),它支持直接传入字符串类型的连接字符串。修改后的代码如下:

services.AddTransient<IDbConnection>(
    sp => new SqlConnection(Configuration.GetConnectionString("DefaultConnection")));
services.AddEntityFrameworkSqlServer()
    .AddDbContext<IETrackerContext>(options => 
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

2. 适配自定义/第三方SqlServerConnection类

如果SqlServerConnection是你自定义或第三方库中的类,且其构造函数不接受字符串参数,需要根据它的构造要求调整:

  • 若构造函数需要SqlConnectionStringBuilder对象:
services.AddTransient<IDbConnection>(sp => 
{
    var connStr = Configuration.GetConnectionString("DefaultConnection");
    var connStrBuilder = new SqlConnectionStringBuilder(connStr);
    return new SqlServerConnection(connStrBuilder);
});
  • 若构造函数依赖其他服务(比如DbContextOptions):
services.AddTransient<IDbConnection>(sp => 
{
    var contextOptions = sp.GetRequiredService<DbContextOptions<IETrackerContext>>();
    return new SqlServerConnection(contextOptions);
});

3. 统一DbContext的连接配置

注意你的AddDbContext<IETrackerContext>()调用未指定连接配置,建议补充上述代码中的UseSqlServer配置,确保DbContext与IDbConnection使用相同的连接字符串,避免出现不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:06