Skip to content

快速开始

Db4Net 是面向 Dapper 的轻量级流式 SQL 构建器。它专注于安全、参数化的单表查询和命令,同时让 Dapper 继续负责执行与 SELECT 结果物化。

Db4Net 不是 ORM,也不是 LINQ Provider。它的 API 有意保持 SQL 风格,例如 SelectFrom<T>()InsertInto<T>()Update<T>()DeleteFrom<T>()

安装

bash
dotnet add package Db4Net --prerelease

NuGet 包提供 net8.0netstandard2.0 两组目标框架资产。

同时安装你所使用数据库的 provider 包:

bash
dotnet add package Microsoft.Data.SqlClient
dotnet add package Microsoft.Data.Sqlite
dotnet add package Npgsql
dotnet add package MySqlConnector

Db4Net 面向 IDbConnection 工作;provider 包会提供具体连接类型,例如 SqlConnectionSqliteConnectionNpgsqlConnectionMySqlConnection

第一个查询

csharp
using Db4Net;

var user = await connection
    .UseDb4Net(Db4NetOptions.Sqlite)
    .SelectFrom<User>()
    .Where(u => u.Id, Op.Eq, 1)
    .QuerySingleOrDefaultAsync();

上面的调用会生成参数化 SQL,并通过 Dapper 执行。

提示

如果只想检查生成的 SQL,而不需要真实连接执行命令,可以使用 Db4NetDatabase.Create(...)

csharp
var command = Db4NetDatabase
    .Create(Db4NetOptions.SqlServer)
    .SelectFrom<User>(u => u.Id, u => u.Name)
    .Where(u => u.Id, Op.Eq, 1)
    .ToCommand();

Console.WriteLine(command.Sql);
sql
SELECT [Id], [Name] FROM [Users] WHERE [Id] = @p0

适用范围

当前 alpha 版本聚焦于 SQL Server、SQLite、PostgreSQL 和 MySQL 的类型化单表 SELECTINSERTUPDATEDELETE,以及实体便捷方法、多实体便捷方法、冲突插入、表名覆盖、筛选分组、排序分页和执行选项。

复杂 join、数据库特定 SQL 或高度优化的导入/同步场景,建议直接使用 Dapper 原生 SQL,或通过数据库视图暴露稳定的读取模型。

下一步

  • 阅读完整示例,了解从连接到查询、写入和事务的完整流程。
  • 继续查看查询,了解分页、计数、存在性检查和聚合。
  • 设计 join、生成值、批量导入或 ORM 风格能力前,先查看限制