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 的子集合查詢;
暫時不支持【延時屬性】的廣播;
此功能和【過濾器】不同,用於單次多表查詢條件的傳播;
系列文章導航
-
(二十)多表查詢 WhereCascade
