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
相关产品推荐
相关产品推荐

