Quand j'utilise dapper, je continue à obtenir la première ligne du tableau, même si j'essaie de passer un identifiant spécifique, mais je reçois toujours la première ligne du tableau. Qu'est-ce qu'il me manque? J'ai vérifié dans le profileur SQL et constaté que l'id n'est pas envoyé à la procédure stockée et que toutes les données sont renvoyées. J'ai fatigué beaucoup de choses mais je ne sais pas pourquoi id n'est pas passé.
public Setting GetConfigurationPerIdy(string id)
{
return Run(conn => conn.Query<Setting>("spProc_GetSettingById",
new {id}).FirstOrDefault());
}
Comme avec ADO.NET standard, l'hypothèse par défaut est CommandType.CommandText
; Si la commande que vous exécutez est une procédure stockée, vous devez lui indiquer :
..., new {id}, commandType: CommandType.StoredProcedure
Sinon, il est fonctionnellement identique à:
declare @id int = 7; -- or whatever
exec spProc_GetSettingById; -- note that we didn't add the parameter
Supprimez FirstOrDefault () de votre code, car il ne renverra que la première ligne de la table, sinon null par défaut.