1. SqlSugar多表查询实战解析
作为.NET生态中广受欢迎的ORM框架,SqlSugar在处理复杂查询场景时提供了多种灵活方案。在实际项目中,单表查询往往无法满足业务需求,多表关联查询成为必备技能。下面我将结合多年开发经验,详细拆解SqlSugar的多表查询实现方式。
1.1 基础多表连接实现
SqlSugar通过ISugarQueryable<T, T2>接口提供多表查询支持,其核心是通过Lambda表达式定义表关联关系。以Person和Employee两个实体类为例:
csharp复制public class Person
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class Employee
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public int PersonId { get; set; }
[SugarColumn(IsIgnore = true)]
public Person Person { get; set; }
}
最基础的多表查询实现如下:
csharp复制var query = db.Queryable<Person, Employee>((p, e) => p.Id == e.PersonId)
.Select((p, e) => new {
PersonName = p.Name,
EmployeeName = e.Name
});
这种写法会生成标准的内连接(INNER JOIN)SQL语句。实际开发中需要注意:
- 关联条件必须明确,避免产生笛卡尔积
- 建议始终指定Select字段,避免查询不必要的数据
- 复杂查询建议拆分为多个步骤,提高可读性
1.2 多种连接方式详解
SqlSugar支持完整的SQL连接类型,通过JoinType枚举指定:
csharp复制var leftJoinQuery = db.Queryable<Person, Employee>(
(p, e) => new object[] {
JoinType.Lef
