mvc3 dapper No existe mapeo desde el modelo

asp.net-mvc-3 dapper tolist

Pregunta

Estoy haciendo un poco de codificación en dapper y obtengo el error. No existe mapeo desde el tipo de objeto a un tipo nativo de proveedor gestionado conocido. Este error ocurre en myfriends var for dapper. Estoy usando dapper para obtener una lista de valores INT de una tabla y luego compararlos con otra ... este es el código que me da ese error

   int myid = Convert.ToInt32(User.Identity.Name);
 // The var myfriend is giving me that error above
            var myfriends = sqlConnection.Query<friend>("Select otherfriendsID from friends where profileID=@myidd", new { myidd = myid }).ToList();

            var profiles = sqlConnection.Query<profile>("Select top 40 * from profiles where photo is not null AND profileID=@friendship order by profileID desc", new {friendship=myfriends}).ToList();

sin embargo, si uso la entidad, todo funciona bien, por ejemplo, este código funciona a continuación.

            var myfriends = (from s in db.friends where s.profileID == myid select s.otherfriendsID).ToList();

Qué podría estar pasando aquí..

Respuesta aceptada

myfriends es una List<friend> . A continuación, transfiere eso como un parámetro de consulta, es decir,

new {friendship=myfriends}

con:

AND profileID=@friendship

Ahora ... ¿qué es @friendship ? ¿Cómo debería pasar en una List<friend> aquí? ¿Qué significa eso para pasar de una lista de objetos (cada uno de los cuales podría tener varias propiedades) como un único parámetro? (Nota: estoy ignorando los parámetros con valores de tabla para los propósitos de esta pregunta)

Entonces, ¿cuántos myfriends esperas? 0? 1? ¿cualquier número? Esto podría ser, por ejemplo:

var profileIds = myfriends.Select(x => x.ProfileId);
...
new {profileIds}
...
AND profileID in @profileIds

o tal vez:

new {profileId = myfriends.Single().ProfileId}
...
AND profileID = @profileId


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é