Comment puis-je sélectionner un lot dans Dapper?

c# dapper sql sql-server-2008

Question

J'ai une table avec une clé primaire composite de deux colonnes. Dans Dapper .NET, j'utilise .Query en transmettant mon instruction select, ainsi qu'un tableau des paramètres. J'ai découvert que Dapper n'attend qu'un seul objet pour les paramètres dans les instructions SELECT, contrairement à Execute pour INSERT et UPDATE, où je pourrais le faire:

var batchParams = new List<object>();
batchParams.add(new 
    {
    ID = 50,
    Lang = 40
    });
batchParams.add(new 
    {
    ID = 20,
    Lang = 31
    });

Et puis je pourrais simplement passer ce tableau à mon appel d'exécution. Essentiellement, je veux exécuter plusieurs instructions de sélection (chacune extraira une ligne), puis récupère le résultat sous forme de tableau de résultats. Est-ce possible dans Dapper?

Réponse d'expert

Il n'est pas intégré, mais vous pourriez probablement ajouter une méthode d'extension qui fait quelque chose comme:

foreach(var val in input)
    foreach(var row in conn.Query<T>(sql, val))
        yield return row;

Cela pourrait également être réalisé via SelectMany dans LINQ-to-Objects:

var  combined = batch.SeletMany(x => conn.Query<T>(sql, x));



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