iqueryable怎么进行操作_C# 数据操作系列 - 16 SqlSugar 完结篇(最后的精华)

0. 前言

前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了。但是还有一点点在开发中并不常用,但是却非常有用的方法。接下来让我们一起来看看还有哪些有意思的内容。

a7990485541927a1cbd2a1604ba4af4b.png

1. 不同寻常的查询

之前介绍了针对单个表的查询,同样也是相对简单的查询模式。虽然开发完全够用,但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。

1.1 多表查询

SqlSugar提供了一种特殊的多表查询方案,使用IQueryable接口 。来看看是怎样操作的吧:

ISugarQueryable Queryable(Expression> joinExpression);ISugarQueryable Queryable(ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, Expression> joinExpression)            where T : class, new()            where T2 : class, new();ISugarQueryable Queryable(ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, JoinType joinType, Expression> joinExpression)            where T : class, new()            where T2 : class, new();ISugarQueryable Queryable(Expression> joinExpression) where T : class, new();

这些方法是属于SqlSugarClient类的方法,SqlSugar提供了最多12个泛型的方法支持,当然实际上开发中能遇到5个表的联查都很少。除非说是在做报表程序,否则就得审查一下数据表模型是否合理了。就以这四个方法为例,介绍一下多表查询如何使用:

先来两个模型类:

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; }}

简单的描述一下两个类的关系:一个雇员身份对应一个人,但一个人不一定会有一个雇员身份。

OK,先从第一个方法说起:

var query = context.Client.Queryable((pr, em)=>new object[]{    JoinType.Left,    em.PersonId == pr.Id});

第一个返回,是两个表的连接方式,例如:Left代表左连接,Inner表示内连接,Right表示右连接;第二个返回是两个表之间的连接依据。这是一个固定的形式,返回一个Object数组,其中第一个是连接方式,第二个是通过哪个(些)字段进行连接。

生成的SQL类似如下:

SELECT `pr`.`Id`,`pr`.`Name`,`pr`.`Age` FROM `Person` pr Left JOIN `Employee` em ON ( `em`.`PersonId` = `pr`.`Id` ) 

第二个方法:

var query = context.Client.Queryable(context.Client.Queryable(),                context.Client.Queryable(),                (pr
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值