Toujours obtenir la première ligne de la table lors de l'utilisation de dapper

dapper

Question

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());
}

Réponse d'expert

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

Réponse populaire

Supprimez FirstOrDefault () de votre code, car il ne renverra que la première ligne de la table, sinon null par défaut.




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