Confus sur la configuration des paramètres pour une requête SQL

c# dapper orm sql sql-server

Question

J'utilise Dapper ORM pour interroger ma base de données. Je me suis familiarisé avec la syntaxe de requête, mais j'ai des problèmes avec les paramètres.

Voici la requête qui fonctionne:

orders = ctx.Query<OrderView>(myQuery, new { Seller = 104386, StatusID = 2, query = "people"});

Cela mappe les paramètres dans myQuery (@Seller, @StatusID, @query) à ces valeurs et cela fonctionne correctement.

Cependant, dans mon programme, je génère des paramètres à la volée et les stocke dans un List<ObjectParameter> , ainsi chaque paramètre a un nom et une valeur. Cependant, je ne peux pas obtenir que cela fonctionne correctement dans la requête. Voici un exemple de ce qui ne fonctionne pas:

orders = ctx.Query<OrderView>(myQuery, parameters.toArray());

J'ai aussi essayé de le convertir en List<SqlParameter> mais cela ne fonctionne pas non plus. Est-ce que quelqu'un sait comment je peux répliquer la requête de travail avec ma liste de paramètres?

Réponse acceptée

ObjectParameter est un objet EF ( System.Data.Entity.dll ) et n'est pas utilisé dans dapper. Vous voulez DynamicParameters , dans l'assembly / namespace dapper:

var args = new DynamicParameters();
...
args.Add(name, value); // there are more complex usages, note
...
connection.Query<OrderView>(myQuery, args);

Si vous voulez prendre plus de contrôle - par exemple vous voulez vraiment utiliser ObjectParameter - c'est bien aussi: vous écrivez simplement votre propre type qui implémente SqlMapper.IDynamicParameters , et vous le transmettez à dapper.



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