首页 新闻 会员 周边

Dapper查询

0
悬赏园豆:20 [已解决问题] 解决于 2019-10-08 16:50

我有三张表,分别是A/B/C,三个表通过id来关联。现在我要用dapper来实现查询数据,sql语句是三个表关联的。这个用dapper怎么实现。。

走过不远的地方的主页 走过不远的地方 | 初学一级 | 园豆:5
提问于:2019-10-06 09:29
< >
分享
最佳答案
0

1楼回复的那句(u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; }就是一个委托函数,参数类型是UserInfo、Movies、MyTYC,返回类型是UserInfo,Dapper关联查询搜索下“splitOn”关键字和Fun委托就知道怎么写了。

收获园豆:20
最美的不是下雨天 | 初学一级 |园豆:4 | 2019-10-08 14:13

哥,我现在有一张总表A,然后又B,C,D,A中有B,C,D三个表的表示。这样我在Query后面填那个几个表?

走过不远的地方 | 园豆:5 (初学一级) | 2019-10-08 14:18

@走过不远的地方: Query<TFirst, TSecond, TThird, TFourth, TReturn>,按照你的表述A是Query<A, B, C, D, A>,最后一个TReturn必须为A,其他的顺序不固定。

最美的不是下雨天 | 园豆:4 (初学一级) | 2019-10-08 14:42

@最美的不是下雨天: B,C,D在A中表示是list<A>,list<B>,list<C>,并且都是根据id来联合查询。里面怎么表示,老哥。

走过不远的地方 | 园豆:5 (初学一级) | 2019-10-08 14:46

@走过不远的地方: 关键字查下“splitOn”,A里面B、C、D赋值通过委托函数,就是(u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; },但是函数内容要改写。

最美的不是下雨天 | 园豆:4 (初学一级) | 2019-10-08 14:51

@最美的不是下雨天: 好的,老哥。

走过不远的地方 | 园豆:5 (初学一级) | 2019-10-08 14:52
其他回答(2)
0

参考代码如下

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();
} 
dudu | 园豆:31003 (高人七级) | 2019-10-06 14:21

我sql语句已经写好了,我需要的是这种:var data = conn.Query<UserInfo, Movies, MyTYC, UserInfo>(sql, (u, m, t) => { u.Movies = m; u.MyTYC.Add(t); return u; }); 我就想知道这句语句怎么理解。老哥

支持(0) 反对(0) 走过不远的地方 | 园豆:5 (初学一级) | 2019-10-06 14:24

@走过不远的地方: 后面的是 lambda 表达式表示的方法,就是将查询结果的值传给后面的方法。

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2019-10-06 14:35
0
张朋举 | 园豆:1915 (小虾三级) | 2019-10-06 21:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册