Dapper obtiene el error cuando se une a las tablas

asp.net asp.net-core asp.net-core-1.0 dapper dapper-extensions

Pregunta

Soy nuevo en Dapper me sale un error cuando recupero datos de la tabla unida

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);

este es el mensaje de error

'SqlConnection' no contiene una definición para 'Query' y no se puede encontrar ningún método de extensión 'Query' que acepte un primer argumento de tipo 'SqlConnection' (¿falta una directiva using o una referencia de ensamblado?)

Imagen de error

Respuesta popular

El error se debe a una invocación no válida; no hay sobrecarga que acepte dos argumentos genéricos.

Aunque Dapper admite multiproceso, la llamada en realidad requiere tres argumentos genéricos, TFirst , TSecond y TReturn (donde TReturn puede ser uno de los dos o TReturn otro tipo).

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

Un ejemplo de llamada válida de los documentos

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

Una invocación no válida con solo dos argumentos genéricos produce exactamente el mensaje de error que obtienes.

Supongo que o bien querías la tercera sobrecarga que acepta un solo argumento genérico

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

o el 4to que acepta tres

 Query<TFirst, TSecond, TResult>( string sql, Func<TFirst, TSecond, TResult> map, ... );

En ambos casos, todavía necesita una función de mapa.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué