Comment créer 1 ou 2 objets par ligne avec dapper?

c# dapper sql-server

Question

J'ai une ligne avec 4 colonnes de données. Je veux créer un objet A à partir des données des colonnes 1-2. Si les données ne sont pas présentes dans les colonnes 1-2, utilisez les colonnes 3-4 pour créer un objet B. Dans de rares cas, nous aurons des données dans toutes les colonnes, mais les données des colonnes 2 et 4 ne correspondent pas. Dans ce cas, je veux retourner un objet A et un objet B.

Est-il possible de faire cela dans Dapper en utilisant le multi-mapping? Ou devrais-je retourner un objet C qui comprend les 4 colonnes, puis post-traiter les données pour créer les objets que A et BI veulent réellement?

public class A {
  public long ID {get;set;}
  public long Value {get;set;}
}
public class B {
  public long ID {get;set;}
  public long Value {get;set;}
}

Les objets A et B ne sont pas liés les uns aux autres (c.-à-d. Que A ne contient pas de liste de B). Donc, je ne sais pas comment procéder.

Réponse acceptée

Si les données sont partitionnées par Id , elles devraient déjà fonctionner si vous utilisez un type de wrapper pour représenter les deux valeurs. Par exemple, si nous utilisons un Tuple<,> , alors:

var data = conn.Query<A, B, Tuple<A, B>>(sql,(a, b) => Tuple.Create(a, b), args);



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