例如有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)。
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】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.