Dapper: puis-je utiliser des paramètres pour quelque chose?

dapper npgsql parameter-passing

Question

J'écris du code qui préparera ma base de données pour mon application. Dans le code, il y a des instructions SQL répétitives quand je crée une table, et je veux les cacher dans certaines méthodes (il n'y en a que deux pour l'instant: créer la clé primaire et en faire un auto-incrémenté) postgres). Pour le cas simple de la clé primaire, j'ai d'abord écrit une fonction comme celle-ci:

public void MakePrimaryKey(DbConnection conn, string tblName, string colName)
{
    conn.Execute(@"
ALTER TABLE ""@tblName""
    ADD CONSTRAINT ""@constrName"" PRIMARY KEY(""@colName"")
    ", new { tblName = tblName,
             constrName = tblName + "_pkey",
             colName = colName } );
}

Après beaucoup d'erreurs et d'exceptions, j'ai finalement conclu que l'utilisation de paramètres de cette manière n'est pas vraiment prise en charge, alors je suis passé à un appel string.Format() traditionnel, et tout allait bien.

Mais je ne suis pas vraiment satisfait. Est-ce que cette façon d'utiliser les paramètres n'est vraiment pas supportée? Si oui, quels sont les endroits où je peux utiliser ces paramètres en toute sécurité? Seulement pour les parties variables de la requête SQL - telles que les endroits où je peux utiliser les paramètres d'une procédure stockée?

Réponse acceptée

Si je me souviens bien, Dapper utilise une commande IDbCommandée pour exécuter ses requêtes.

Les requêtes paramétrées sont simplement des opérations de remplacement de chaîne.

Pour être plus précis, une requête paramétrée vous permet d'avoir des paramètres dans votre requête, envoie les valeurs pour ces paramètres, puis SQL Server gère la compilation des requêtes et transmet les valeurs pour les paramètres.

Si vous ne pouvez pas créer une requête paramétrée avec la méthode ADO.NET simple en utilisant la syntaxe souhaitée, Dapper.NET ne pourra pas non plus le faire pour vous.




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