首页 .NET/Web Dapper之List泛型映射数据

Dapper之List泛型映射数据

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

例如有Student表和Classes表,学生Student表里面包括年级Classes,一个学生对应一个班级,一对一关系

笨的做法,先查询所有学生,再根据学生的Classes的值去查Classes对应的数据

Dapper可以直接做映射,注意根据外键列字段排主次表所有列的前后关系,否则查询不到数据,下面有备注


存储过程版:
public List<Thing> Get(int startindex, int pagesize, string key, string order)
{
object parm = new { startindex, pagesize, key, order, tableName= "View_Thing" };

using (var db = ConnectionFactory.GetOpenConnection())
{
////Thing, ThingType,为映射参数,最后一个Thing为返回类型
List<Thing> dt = db.Query<Thing, ThingType, Thing>("GetAll", (thing, thingtype) =>
{
////将结果数据映射到返回类型。
thing.thingType = thingtype;
//thing.thingtype_No = thingtype.tt_No;
return thing;
}, parm, commandType:CommandType.StoredProcedure, splitOn: "thingtype_No").AsList();
return dt;
}
}
//splitOn这告诉 Dapper 拆分thingtype_No 列上的数据。该列之前的任何内容都映射到第一个参数 (Thing),
//该列之后的任何其他内容都应该映射到第二个输入参数 (thingtype)。

SQl语句版
public List<Thing> Get(int startindex, int pagesize, string key, string order)
{
using (var db = ConnectionFactory.GetOpenConnection())
{
////Thing, ThingType,为映射参数,最后一个Thing为返回类型
List<Thing> dt = db.Query<Thing, ThingType, Thing>("select * from thing", (thing, thingtype) =>
{
//将结果数据映射到返回类型。
thing.thingType = thingtype;
//thing.thingtype_No = thingtype.tt_No;
return thing;
}, splitOn: "thingtype_No").AsList();
return dt;
//splitOn这告诉 Dapper 拆分thingtype_No 列上的数据。该列之前的任何内容都映射到第一个参数 (Thing),
//该列之后的任何其他内容都应该映射到第二个输入参数 (thingtype)。
}
}

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