.NET 6 Web项目中SQL Kata依赖注入的最新推荐用法
.NET 6 Web项目中SQL Kata依赖注入的推荐方式
在.NET 6的顶级语句模式下(替代旧版Startup.cs的拆分结构),SQL Kata的依赖注入配置逻辑本质和旧版一致,只是语法适配了.NET 6的WebApplicationBuilder规范,以下是具体实现步骤:
1. 安装必要的NuGet包
确保已安装SQL Kata核心包、执行包,以及对应数据库的驱动包:
# SQL Kata核心与执行包 dotnet add package SQLKata dotnet add package SQLKata.Execution # 以MySQL为例,其他数据库替换为对应驱动:SQL Server用Microsoft.Data.SqlClient,PostgreSQL用Npgsql dotnet add package MySqlConnector
2. 在Program.cs中配置依赖注入
基础演示写法(硬编码连接字符串)
using SQLKata; using SQLKata.Execution; using MySqlConnector; var builder = WebApplication.CreateBuilder(args); // 将QueryFactory注册为Scoped生命周期(每个请求实例化一次,符合数据库连接最佳实践) builder.Services.AddScoped<QueryFactory>(sp => { // 示例连接字符串,实际项目请勿硬编码 var connectionString = "Host=localhost;Port=3306;User=user;Password=secret;Database=Users;SslMode=None"; var connection = new MySqlConnection(connectionString); // 根据数据库类型选择对应编译器:MySQL用MySqlCompiler,SQL Server用SqlServerCompiler,PostgreSQL用PostgresCompiler var compiler = new MySqlCompiler(); return new QueryFactory(connection, compiler); }); var app = builder.Build(); // 后续配置中间件、端点等逻辑... app.Run();
生产环境写法(从配置文件读取连接字符串)
先在appsettings.json中配置连接字符串:
{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=3306;User=user;Password=secret;Database=Users;SslMode=None" } }
然后在Program.cs中读取配置并注册:
using SQLKata; using SQLKata.Execution; using MySqlConnector; using System.Data; var builder = WebApplication.CreateBuilder(args); // 从配置文件读取连接字符串 var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); // 可选:先单独注册数据库连接,再注入到QueryFactory(更灵活,便于后续复用连接实例) builder.Services.AddScoped<IDbConnection>(sp => new MySqlConnection(connectionString)); // 注册QueryFactory,依赖注入已注册的数据库连接 builder.Services.AddScoped<QueryFactory>(sp => { var connection = sp.GetRequiredService<IDbConnection>(); var compiler = new MySqlCompiler(); return new QueryFactory(connection, compiler); }); var app = builder.Build(); // 后续配置逻辑... app.Run();
关键说明
- 生命周期选择:推荐使用
AddScoped,确保每个请求拥有独立的QueryFactory实例,避免数据库连接复用引发的问题,同时符合ASP.NET Core的请求生命周期最佳实践。 - 编译器适配:必须根据使用的数据库类型选择对应的编译器,否则SQL语句生成会出现语法错误。
- 配置读取:通过
builder.Configuration.GetConnectionString()是.NET 6读取连接字符串的标准方式,支持环境变量、命令行参数、配置文件等多种配置来源。
内容的提问来源于stack exchange,提问作者Brian W
相关产品推荐
相关产品推荐

