FreeSql (二十)多表查詢 WhereCascade


WhereCascade 多表查詢時非常方便,有了它可以很輕松的完成類型軟刪除,租戶條件的功能。

static 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(); //請務必定義成 Singleton 單例模式

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

暫時不支持【延時屬性】的廣播;

此功能和【過濾器】不同,用於單次多表查詢條件的傳播;

系列文章導航


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM