Skip to content

基础查询

使用SQLBuilder

  • 适用于场景:无实体类,只要有数据库表即可运行。
  • 个性化程度--高,能够支持各类SQL的复杂条件查询、构建
  • 可在需求易变或极简需求下使用
c#
var dt = kit.select("t.ZH_TroubleOID as oid, t.T_Title, t.T_OrgName")
    .from("ZH_Trouble t")
    .where("t.T_Status= 1")
    .orderby("t.SYS_Created desc")
    .top(6)
    .query();

使用仓储

获取仓储的实例rep,可借用仓储的能力进行查询 查询所有数据

  • 依赖于实体类
  • 快速执行各类常见的增删改
  • 条件个性化能力较弱
  • 复杂程度:低
c#
<List<SysRegion> list= rep.GetList(u => u.Pid == input.Id);

使用SQLClip

SQLClip在语法上,与SQLBuilder保持一致,只是在方法上,提供了一些基于实体类,而不是SQL碎片的方法来编织SQL。

  • 依赖于实体类
  • 条件个性化能力中等
  • 复杂程度:中等
  • 特色:无魔法SQL字符串
c#
var cmd= clip.from<HHDutyItem>(out var a)
    .where(() => a.Di_Name == "1")
    .whereIn(()=>a.Di_Idx, new List<int?> { 1,3 })
    .select(()=> a)
    .toSelect();

快捷方法

  • 核心工具类SQLBuilder进行扩展,独立运行,无上下文关联
  • 依赖于实体类
  • 具备个性化条件的能力
  • 支持常见功能如查询列表、查询一个实体、修改、删除。

查询实体列表

常规条件

c#
var list = kit.findList<HHDutyItem>((c,h)=>c.where(()=>h.Di_Idx,0));

按主键查询

c#
var list = kit.findListByIds<HHDutyItem>("0001,0002");

查询单个实体

结果集不是唯一时则返回null

c#
var row = kit.findRow<HHDutyItem>((c, h) => c.where(() => h.HH_DutyItemOID, "0001"));

查询部分字段

c#
//按主键查询字段,泛型写在表达式内
var val = kit.findFieldValue(oid,(SQLClip c,HHDutyItem h) => c.select(() => h.HH_DutyItemOID));

//按主键查询字段,泛型写在参数内
var val = kit.findFieldValue<HHDutyItem,string>(oid, (c,h) => c.select(() => h.HH_DutyItemOID));

//按主键查询字段,泛型写在表达式内,简化模式(只查单个字段)
var val = kit.findFieldValue(oid,(HHDutyItem h) => h.Di_Note);

//按主键查询字段,泛型写在参数内,简化模式(只查单个字段)
var val = kit.findFieldValue<HHDutyItem,string>(oid, (h) => h.Di_Note);

//自定义条件查询字段,泛型写在参数内(可组合多个条件,可选择多个字段)
var val = kit.findFieldValues((SQLClip c, HHDutyItem h) => {
    return c.where(()=> h.HH_DutyItemOID, oid.ToString())
            .select(() => h.Di_Note);
    });