Llenar objeto de lista usando dapper c #

c# dapper fill list object

Pregunta

Tengo dos tablas en mi base de datos como esta:

enter image description here

Y tengo esta clase:

   class Ean
   {
        public string Code{ get; set; }
   }

   class Article
   {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Ean> BarCode { get; set; }
   }

List<Article> arts = new List<Article>();

Creé una lista de artículos y una consulta usando dapper . Me gustaría llenar esta lista con el nombre del artículo, sino también con una lista de artículo relacionado EAN. Intento hacer esta consulta:

SELECT ART.ID AS ID, ART.NAME AS NAME,EAN.EAN AS BARCODE
FROM ART,EAN
WHERE ART.ID = EAN.ID_ART;

y en c # ..

arts = conn.Query<Article>(query, null, transaction).ToList();

pero no trabajas ¿Como puedo hacer? Gracias ... Cualquier sugerencia es bienvenida.

Respuesta aceptada

Eche un vistazo a la función Multi-Mapping de Dapper.

Dapper le permite asignar una sola fila a múltiples objetos. Esta es una característica clave si desea evitar consultas extrañas y asociaciones de carga ansiosas.

Ejemplo:

var sql = 
@"select * from #Posts p 
left join #Users u on u.Id = p.OwnerId 
Order by p.Id";

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

post.Content.IsEqualTo("Sams Post1");
post.Id.IsEqualTo(1);
post.Owner.Name.IsEqualTo("Sam");
post.Owner.Id.IsEqualTo(99);

Nota importante Dapper supone que sus columnas Id se llaman "Id" o "id", si su clave principal es diferente o si desea dividir la fila ancha en un punto que no sea "Id", utilice el parámetro opcional "splitOn".


Respuesta popular

Prueba esto, funcionará, creo que sí

arts = conn.Query<Article>(query).ToList();

También debe cambiar la consulta de la siguiente manera.

SELECT ART.ID AS [Id], ART.NAME AS [Name],EAN.EAN AS [BarCode] 
FROM ART,EAN
WHERE ART.ID = EAN.ID_ART;


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é