J'essaye d'appeler un morceau de SQL avec des paramètres dans Dapper. Ce n'est pas une procédure stockée (j'ai cela fonctionne bien avec les paramètres)
inputCustomerName = "Our Customer";
inputStationName = Null;
var parameters = new
{
customerName = inputCustomerName ,
stationName = inputStationName
};
...
using (var dbConn = dataProvider.CreateConnection)
{
dbConn.ConnectionString = connectionString;
dbConn.Open();
returnValue = dbConn.Query<T>(sql: sql, commandType: commandType, param: parameters);
dbConn.Close();
}
La partie pertinente du SQL est
" ...
WHERE
Customer = ISNULL(@customerName,Customer)
AND Station = ISNULL(@stationName,Station)
";
Je continue à obtenir "propriétaire de type invalide pour DynamicMethod". (J'ai aussi eu ceci en utilisant DynamicParameters au lieu de l'objet anomymous).
Le SQL fonctionne bien sur la base de données elle-même (étant donné que je déclare et @populate @customerName et stationName).
Je pense que j'ai fait quelque chose d'assez simple - quelqu'un peut-il m'éclairer?
La réponse a finalement été un problème de code non inclus dans la question - pour lequel je m'excuse complètement.
Le problème était que T
était une interface, et c'était ce qui faisait exploser Dapper. Il y a probablement quelque chose sous le capot qui signifie que vous ne pouvez utiliser que des classes, pas des interfaces en tant que paramètre de type Query. Bien que je n'aie jamais vu cette restriction explicitement énoncée.
Honte, (mais je peux imaginer quelques raisons)