首页 .NET/Web Dapper之多表映射关联读取数据

Dapper之多表映射关联读取数据

作者:胡同里的砖头 围观群众:235 更新于:2023-09-25

先查看一下Dapper的源码,SqlMapper类; 使用这类的泛型方法:


可以看出SqlMapper类对IDbConnection做出了拓展方法,并针对不同的关联数量实现了不同的重载方法。

其中First、 Second、 Third.........等等泛型参数代表需要关联的对象。可以看出最多可以传入6个泛型参数,支持到TFifth, 也就是最多支持到关联五个表。

相对于单表查询,主要多了一个Func<>泛型内置委托,委托类型与方法泛型参数一致,映射对应关系的逻辑代码应该写在这个泛型委托中

一路f12就可以跟踪到这个委托最终调用的地方



默认是以id为分隔列,如果不是id,可设定splitOn: "xx"参数,Query方法体内最多支持六个参数,其中最后一个是返回参数,所以最多支持五个表的映射

 public List<Procure> Get(string userInfo_No)
{
object parm = new { userInfo_No };
string sql = "select procurebak.* ,'' as id,thing.*,'' as id,warehouse.*,'' as id,factory.* from procurebak left join thing on procurebak.thing_No=thing.t_No left join warehouse on warehouse.wh_No=procurebak.warehouse_No left join Factory on factory.f_No=procurebak.factory_No where procurebak.userInfo_No=@userInfo_No order by procurebak.p_Key desc";
using (var db = ConnectionFactory.GetOpenConnection())
{
List<Procure> dt = db.Query<Procure,Thing,WareHouse,Factory,Procure>(sql,(procurebak,thing,warehouse,factory)=> {
procurebak.thing = thing;
procurebak.wareHouse = warehouse;
procurebak.factory = factory;
return procurebak;
},parm).ToList();
return dt;
}
}

  • 本文标题: Dapper之多表映射关联读取数据
  • 文章分类:【.NET/Web】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8