Remplir l'objet liste en utilisant dapper c #

c# dapper fill list object

Question

J'ai deux tables dans ma base de données comme ceci:

entrer la description de l'image ici

Et j'ai cette classe:

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

Je crée une liste d'articles et avec une requête utilisant dapper . Je voudrais remplir cette liste avec le nom de l'article , mais aussi avec une liste de l' article ean connexes. J'essaie de faire cette requête:

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

et en c # ..

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

mais ne travaille pas. Comment je peux faire? Merci .. Toute suggestion est la bienvenue.

Réponse acceptée

Jetez un coup d'œil à la fonctionnalité de cartographie multiple de Dapper.

Dapper vous permet de mapper une seule ligne sur plusieurs objets. Ceci est une fonctionnalité clé si vous souhaitez éviter les associations d'interrogation et de chargement impatientes.

Exemple:

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

Remarque importante Dapper suppose que vos colonnes Id sont nommées "Id" ou "id", si votre clé primaire est différente ou si vous souhaitez diviser la ligne large au point autre que "Id", utilisez le paramètre facultatif "splitOn".


Réponse populaire

Essayez ceci, ça va marcher, je pense

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

Aussi, vous devez changer la requête comme ci-dessous.

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi