WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能。

IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10").Build();[Table(Name = "tb_topic")]
class Topic {[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public int TestTypeInfoGuid { get; set; }public TestTypeInfo Type { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}
class TestTypeInfo {public int Guid { get; set; }public int ParentId { get; set; }public TestTypeParentInfo Parent { get; set; }public string Name { get; set; }public List<Topic> Topics { get; set; }
}
class TestTypeParentInfo {public int Id { get; set; }public string Name { get; set; }
}ISelect<Topic> select => fsql.Select<Topic>();

WhereCascade

多表查询时,像isdeleted每个表都给条件,挺麻烦的。WhereCascade使用后生成sql时,所有表都附上这个条件。

如:

fsql.Select<t1>()
.LeftJoin<t2>(...)
.WhereCascade(x => x.IsDeleted == false)
.ToList();

得到的 SQL:

SELECT ...
FROM t1
LEFT JOIN t2 on ... AND (t2.IsDeleted = 0)
WHERE t1.IsDeleted = 0

其中的实体可附加表达式时才生效,支持子表查询。单次查询使用的表数目越多收益越大。

可应用范围:

  • 子查询,一对多、多对多、自定义的子查询;
  • Join 查询,导航属性、自定义的Join查询;
  • Include/IncludeMany 的子集合查询;

暂时不支持【延时属性】的广播;

此功能和【过滤器】不同,用于单次多表查询条件的传播;

系列文章导航

  • (一)入门

  • (二)自动迁移实体

  • (三)实体特性

  • (四)实体特性 Fluent Api

  • (五)插入数据

  • (六)批量插入数据

  • (七)插入数据时忽略列

  • (八)插入数据时指定列

  • (九)删除数据

  • (十)更新数据

  • (十一)更新数据 Where

  • (十二)更新数据时指定列

  • (十三)更新数据时忽略列

  • (十四)批量更新数据

  • (十五)查询数据

  • (十六)分页查询

  • (十七)联表查询

  • (十八)导航属性

  • (十九)多表查询

  • (二十)多表查询 WhereCascade

  • (二十一)查询返回数据

  • (二十二)Dto 映射查询

  • (二十三)分组、聚合

  • (二十四)Linq To Sql 语法使用介绍

  • (二十五)延时加载

  • (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

  • (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

  • (二十八)事务

  • (二十九)Lambda 表达式

  • (三十)读写分离

  • (三十一)分区分表

  • (三十二)Aop

  • (三十三)CodeFirst 类型映射

  • (三十四)CodeFirst 迁移说明

  • (三十五)CodeFirst 自定义特性

转载于:https://www.cnblogs.com/FreeSql/p/11531372.html

FreeSql (二十)多表查询 WhereCascade相关推荐

  1. FreeSql (十五)查询数据

    FreeSql在查询数据下足了功能,链式查询语法.多表查询.表达式函数支持得非常到位. IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnecti ...

  2. SQL Server【二】单表查询

    查询 计算列 select * from emp; -- *通配符,表示所有的字段 -- from emp 从emp表查询select empno, ename from emp; select en ...

  3. Oracle 查询技巧与优化(二) 多表查询

    前言 上一篇blog介绍了Oracle中的单表查询和排序的相关技巧(http://blog.csdn.net/wlwlwlwl015/article/details/52083588),本篇blog继 ...

  4. SQL总结(二)连表查询

    连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两个或多个 SELECT ...

  5. SQL基础系列(二)——单表查询

    本文以单表查询为边界,介绍如何对一张表进行简单查询.限制条件查询.结果排序等内容.每种情况均有例句和补充说明. 如想看更多示例,请移步<SQL基础教程(第二版)>-MICK(如需电子版,可 ...

  6. 海量数据查询方案mysql_Mysql海量数据存储和解决方案之二----Mysql分表查询海量数据...

    关键词:分库分表,路由机制,跨区查询,MySQL 数据变更,分表数据查询管理器与线程技术的结合,Cache 前面已经讲过Mysql实现海量海量数据存储查询时,主要有几个关键点,分表,分库,集群,M-S ...

  7. FreeSql (二十二)Dto 映射查询

    适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...

  8. FreeSql (十九)多表查询

    多表查询,常用的有联表 LeftJoin/InnerJoin/RightJoin ,这三个方法在上篇文章已经介绍过. 除了联表,还有子查询 Where Exists,和 Select 子表: IFre ...

  9. FreeSql (二十九)Lambda 表达式

    FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码.这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达 ...

最新文章

  1. 单链表-判断单链表L是否是递增的(双指针法)
  2. NodeList 和 HTMLCollection
  3. UART0串口编程(六):串口(UART0)之UC/OS(二)UC/OS下的串口接收任务编程
  4. Gradle修改本地仓库的位置
  5. 免费下载 | 超级APP背后的移动端技术大揭秘
  6. [译]模型-视图-提供器 模式
  7. jsp之建立一个九九乘法表
  8. 利用Java手写简单的httpserver
  9. word多级编号,如何让第一级为大写“一”,其他级别均为小写1.
  10. mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式
  11. bzoj4516 [Sdoi2016]生成魔咒
  12. 钢琴艺术培训市场现状研究分析报告 -
  13. Resource leak解决办法
  14. 新鲜出炉!ECCV2022 107个开源数据集合辑,全球 AI 研究热点一网打尽
  15. 2022年词达人竞赛笔记
  16. 拼多多收php吗_拼多多果园助力PHP版可运行在云函数
  17. 1分钟利用Excel快速制作随机点名器
  18. ​零代码增删改查完全自动化的万能通用接口
  19. 一个3D摄像机的设计与实现
  20. Intel SGX入门教程(二)在windows环境搭建intel sgx环境并运行helloworld程序

热门文章

  1. angular8 设置延时时间
  2. REVERSE-PRACTICE-BUUCTF-20
  3. Java 新手习题()
  4. php测试插入,php – 使用Symfony测试数据库插入
  5. php页面转发,php如何实现页面路由转发
  6. IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹。如果重复不拷贝,可续拷
  7. jdk11 后用的指定编码格式,读取文件
  8. mysql memcached java_java缓存技术memcached实例
  9. MariaDB通过命令行的方式导出指定数据库和还原指定数据库
  10. android 判断对象,Android网络判断知识小结