我有三张表,分别是A/B/C,三个表通过id来关联。现在我要用dapper来实现查询数据,sql语句是三个表关联的。这个用dapper怎么实现。。
1楼回复的那句(u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; }就是一个委托函数,参数类型是UserInfo、Movies、MyTYC,返回类型是UserInfo,Dapper关联查询搜索下“splitOn”关键字和Fun委托就知道怎么写了。
哥,我现在有一张总表A,然后又B,C,D,A中有B,C,D三个表的表示。这样我在Query后面填那个几个表?
@走过不远的地方: Query<TFirst, TSecond, TThird, TFourth, TReturn>,按照你的表述A是Query<A, B, C, D, A>,最后一个TReturn必须为A,其他的顺序不固定。
@最美的不是下雨天: B,C,D在A中表示是list<A>,list<B>,list<C>,并且都是根据id来联合查询。里面怎么表示,老哥。
@走过不远的地方: 关键字查下“splitOn”,A里面B、C、D赋值通过委托函数,就是(u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; },但是函数内容要改写。
@最美的不是下雨天: 好的,老哥。
参考代码如下
using (var conn = new SqlConnection(connStr))
{
var result = (await conn.QueryAsync<Abc>(
@"SELECT *
FROM TableA A
INNER JOIN B ON A.Id=B.Id
INNER JOIN C ON A.Id=C.Id
WHERE Id=@Id",
new { Id }))
.ToList();
}
我sql语句已经写好了,我需要的是这种:var data = conn.Query<UserInfo, Movies, MyTYC, UserInfo>(sql, (u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; }); 我就想知道这句语句怎么理解。老哥
@走过不远的地方: 后面的是 lambda 表达式表示的方法,就是将查询结果的值传给后面的方法。