相关文章推荐
绅士的勺子  ·  Oops!!! - 简书·  1 年前    · 

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 的子集合查询;

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

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

系列文章导航

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

原文链接: http://www.cnblogs.com/FreeSql/p/11531372.html 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上, 数据库 不同实现方式有所不同。 与分表不同,一张大表进行分区后,他还是一张表,不会变成二张表,但是他存放数据的区块变多了。分区的概念,我觉得就想突破磁盘I/O瓶颈,想提高磁盘的读写能力,来增加 数据库 的性能。 分区实现是比较简单的,建立分区表,根建... 1.desc '表名' -- 查看表结构2.show create table '表名' -- 查看建表语句3.grant select, insert on ' 数据库 名.表名' to '用户名'@' 数据库 地址' identified by '密码' -- 创建新用户并授权4.revoke insert on ' 数据库 名.表名' from '用户名'@' 数据库 地址' -- 回收权限5.? cont... ParisGabriel每天坚持手写一天一篇 决定坚持几年 为了梦想为了信仰开局一张图今天接着昨天的说索引有4种:普通 索引 :index唯一索引:unique主键索引:primary key外键索引:foreign key索引查询命令:show index from 表名\G;Non_Unique:1 :indexNon_Unique:0 :unique外键索引(foreign k... Free Sql 开源发布快一年了,立志成为 .Net 平台方便好用的 ORM,仓库地址:https://github.com/2881099/ Free Sql 随着不断的迭代更新,越来越稳定,也越来越强大。预计在一周年的时候(2020年1月1日)发布 1.0 正式版本。 金九银十的日子过去了,在这个铜一般的月份里,鄙人做了几个重大功能,希望对使用者开发提供更大的便利。 一、Dto 映射查询 二、I... 官方文档:http:// free sql .net/guide/# free sql Free Sql 是功能强大的 .NET ORM,支持 .NetFramework 4.0+、.NetCore 2.1+、Xamarin等支持 NetStandard 所有运行平台。 支持 My Sql / Sql Server/Postgre SQL /Oracle/ Sql ite/Firebird/达梦/神通/人大金仓/翰高/华为GaussDB/MsAccess 数据库 Free Sql 使用模型执行数据访问,模型由实体类表示 数据库 表或视 说点题外话,相比net其他的版本,net6简单了许多,不再需要配置一大堆路由、插件……等等,使用体验上好了许多。 net 中的orm框架之前接触过EF,因为项目的原因最近又用到了 Free Sql ,回过头来看看,EF还是显的笨重了不少, Free Sql 除了安装Nuget包之外,只有一句connection连接字符串的配置,只要配对了就直接可以使用了,听起来是不是很爽啊,哈哈。 Free Sql 提供了众多常用 数据库 的驱动插件,打开nuget选择需要的插件包安装(笔者用的数... 0. 前言老幺小说网 https://laoyao.org 前几天 Free Sql 的作者向我推荐了 Free Sql 框架,想让我帮忙写个文章介绍一下。嗯,想不到我也能带个货了。哈哈,开个玩笑~看了下觉得设计的挺有意思的,所以就谢了这篇文章。 简单介绍一下, Free Sql 是NCC组织的沙盒级项目,是一款功能强大的 ORM 组件,支持 .NET Core、.NET Framework 和 Xamarin。目前 Free Sql 支持以下 数据库 :My SQL 、Postgre SQL Sql Server、Ora... Free Sql 是功能強大的對象關系映射技術(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.0+ 或 Xamarin扶搖直上,至強ORM衹爲自由編碼;鵬程萬裡,至簡Linq可使保畱黑發;橫批: Free Sql (詩人:Coder)Features[x] 支持 CodeFirst 遷移,哪怕使用 Access 數據庫也支持;[x] 支持 DbFirst 從數據庫導入實... Free Sql 有一个用户很迷的功能 WhereDynamicFilter 动态表格查询,本文讲解它的设计初衷,如何高效理解,从此不再迷惑。小时候学习编程,老师经常教导我们,程序 = 数据结构 + 算法,今天就以我自身的认知讲解该功能的完整设计过程,其中包含数据结构和算法。对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系 数据库 存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和 数据库 之间映射的元数据,将程序中的对象自动持久化到关系数据