在表之间加入时,Dapper会出错

时间:2016-09-05 08:44:26

标签: asp.net asp.net-core dapper asp.net-core-1.0 dapper-extensions

我是dapper的新手,当我从连接表中检索数据时出现错误

var qry = @"SELECT Cities.Id,
                           Cities.Name,
                           Cities.Sort,
                           Countries.Name
                           FROM[dbo].[Cities]
                            JOIN Countries ON Countries.Id = Cities.CountryId";

var result = con.Query<Cities, Countries>(qry);

这是错误消息

  

'SqlConnection'不包含'Query'的定义,不包含   扩展方法'Query'接受类型的第一个参数   可以找到'SqlConnection'(你是否错过了使用指令或   汇编参考?)

Error Image

1 个答案:

答案 0 :(得分:1)

错误是由无效调用引起的 - 没有重载接受两个泛型参数。

虽然事件虽然Dapper支持多重映射,但调用实际上需要三个通用参数TFirstTSecondTReturn(其中TReturn可以是两者中的一个或另一个类型)。

https://github.com/StackExchange/dapper-dot-net#multi-mapping

来自文档的有效来电示例

var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post;});

只有两个通用参数的无效调用会产生您收到的错误消息。

我的猜测是你想要第三个重载接受一个通用参数

 Query<TResult>( string sql, Type[] types, Func<object[], TResult> map, ... );

或接受三个

的第四个
 Query<TFirst, TSecond, TResult>( string sql, Func<TFirst, TSecond, TResult> map, ... );

在这两种情况下,你仍然需要一个地图功能。