SqlSugar
SqlSugar是一个开源的ORM框架,支持.NET Core/.NET Framework/Mono/Xamarin。它是一个轻量级、易于使用、高性能的ORM框架,具有较强的扩展性。SqlSugar不仅提供基础的CRUD操作,还提供了更高级的查询操作,如多表联查、分页、分组、聚合等功能。
# 安装
可以通过NuGet进行安装:
Install-Package SqlSugar
也可以通过.NET CLI进行安装:
dotnet add package SqlSugar
# 快速入门
# 连接数据库
在使用SqlSugar之前,需要先建立一个数据库连接。以下是一个连接SQL Server数据库的示例:
using SqlSugar;
// 创建数据库连接对象
var db = new SqlSugarClient(new ConnectionConfig {
ConnectionString = "Server=localhost;Database=mydatabase;User ID=myuser;Password=mypassword;Trusted_Connection=False;",
DbType = DbType.SqlServer,
IsAutoCloseConnection = true
});
// 测试连接是否成功
if (db.Ado.ConnectServer()) {
Console.WriteLine("连接成功!");
} else {
Console.WriteLine("连接失败!");
}
上述代码首先创建了一个SqlSugarClient
对象,它包含一个数据库连接,然后使用该连接进行测试。
# 实体类
使用SqlSugar时,需要定义一个实体类来映射数据库中的表。以下是一个示例:
public class User
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
在上述示例中,User
类映射了一个名为user
的表,包含了Id
、Name
、Age
三个字段。需要注意的是,Id
字段被标记为主键,并且自增。
# CRUD操作
以下是一些基本的CRUD操作示例:
// 添加
var user = new User { Name = "张三", Age = 18 };
var result = db.Insertable(user).ExecuteReturnIdentity();
// 修改
user.Name = "李四";
result = db.Updateable(user).ExecuteCommand();
// 删除
result = db.Deleteable<User>().Where(u => u.Age == 18).ExecuteCommand();
// 查询
var list = db.Queryable<User>().Where(u => u.Age > 20).ToList();
在上述示例中,Insertable
、Updateable
、Deleteable
、Queryable
都是SqlSugar提供的一些操作方法,它们用于构建SQL语句。其中,ToList
用于将查询结果转换为一个列表。
# 高级查询
SqlSugar还提供了更高级的查询功能,如多表联查、分页、分组、聚合等。以下是一些示例:
// 多表联查
var list = db.Queryable<User, Department>((u, d) => new JoinQueryInfos(
JoinType.Inner, u.Id == d.UserId
))
.Select((u, d) => new {
UserId = u.Id,
UserName = u.Name,
DepartmentName = d.Name
})
.ToList();
// 分页
var page = db.Queryable<User>()
.Where(u => u.Age > 20)
.OrderBy(u => u.Id)
.ToPageList(1, 10);
// 分组
var group = db.Queryable<User>()
.GroupBy(u => u.Age / 10)
.Select(u => new {
AgeRange = u.Age / 10 * 10,
Count = u.Count()
})
.ToList();
// 聚合
var maxAge = db.Queryable<User>()
.Max(u => u.Age);
var minAge = db.Queryable<User>()
.Min(u => u.Age);
var avgAge = db.Queryable<User>()
.Where(u => u.Age > 20)
.Average(u => u.Age);
var total = db.Queryable<User>()
.Sum(u => u.Age);
在上述示例中,JoinQueryInfos
用于指定多表联查的条件;ToPageList
用于分页查询;GroupBy
用于分组查询;Max
、Min
、Average
、Sum
用于聚合查询。
# 事务
SqlSugar支持事务处理。以下是一个示例:
// 创建事务对象
var tran = db.Ado.BeginTran();
try
{
// 执行一些操作
var user = new User { Name = "张三", Age = 18 };
db.Insertable(user).ExecuteCommand();
user.Name = "李四";
db.Updateable(user).ExecuteCommand();
db.Deleteable<User>().Where(u => u.Age == 18).ExecuteCommand();
// 提交事务
tran.Commit();
}
catch (Exception ex)
{
// 回滚事务
tran.Rollback();
throw ex;
}
在上述示例中,使用BeginTran
创建一个事务对象,然后在需要进行事务处理的操作中使用该对象,最后使用Commit
提交事务或使用Rollback
回滚事务。
# 高级特性
SqlSugar还提供了一些高级特性,如自动过滤、多语言支持等。以下是一些示例:
// 自动过滤
var db = new SqlSugarClient(new ConnectionConfig {
ConnectionString = "Server=localhost;Database=mydatabase;User ID=myuser;Password=mypassword;Trusted_Connection=False;",
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
IsAutoRewriteSql = true
});
// 多语言支持
SqlSugarTool.AddLanguageConditional("en", () => {
SqlFuncExtensions.IsNullDefaultString = "IsNull";
});
var list = db.Queryable<User>()
.Where(u => u.Name == null)
.ToList();
在上述示例中,使用IsAutoRewriteSql
启用自动过滤,用于过滤一些无用的查询条件;使用AddLanguageConditional
添加多语言支持,用于根据不同的语言环境输出不同的SQL语句。
# 总结
SqlSugar是一个轻量级、易于使用、高性能的ORM框架,支持.NET Core/.NET Framework/Mono/Xamarin,它提供了基本的CRUD操作和更高级的查询功能,如多表联查、分页、分组、聚合等。SqlSugar还支持事务处理和一些高级特性,如自动过滤、多语言支持等。
使用SqlSugar可以极大地简化数据库操作,提高开发效率。但是需要注意的是,在使用SqlSugar时,需要先了解基本的SQL语句,以及如何构建高效的数据库模式。
如果您想要更深入地了解SqlSugar,可以参考官方文档,了解更多的使用方法和高级特性。