Dapper des procédures stockées avec Postgresql sans paramètres alphabétiques

c# dapper plpgsql postgresql stored-procedures

Question

J'essaye d'appeler une procédure stockée Postgresql écrite en plpgsql en utilisant C # et Dapper, mais j'ai trouvé que Dapper classait par ordre alphabétique les paramètres avant de les insérer dans la procédure stockée. Est-il possible d'éviter ce comportement et les éléments insérés dans le bon ordre?

Par exemple, l'appel suivant ne s'exécuterait pas correctement car il classerait les noms de paramètres par ordre alphabétique. Je dois les classer manuellement pour l’appel à passer.

int map_id = conn.Query<int>(
"insert_color",
new
{
    zebra_name = new DbString { Value = slide_name },
    door_name = new DbString { Value = fov_name },
    foo_number = cycle_number,
    variable_path = new DbString { Value = image_path },
    random_path = new DbString { Value = meta_path },
    x = x,
    y = y,
    z = z,
    exposure = exposure,
    type_name = new DbString { Value = image_type },
    copy = copy
},
commandType: CommandType.StoredProcedure).First();

Voici la déclaration de procédure stockée:

CREATE OR REPLACE FUNCTION insert_color(
zebra_name text, door_name text, foo_number integer,    
variable_path text, random_path text, 
x real, y real, z real, exposure real,
type_nametext, copy integer) RETURNS integer AS $$
    ...
$$ LANGUAGE plpgsql;

Réponse acceptée

En interne, Dapper utilise la réflexion pour obtenir les propriétés de l'objet param. Spécifiquement, le GetProperies(...) est que ceux-ci ne sont pas garantis dans un ordre particulier ...

La méthode GetProperties ne renvoie pas de propriétés dans un ordre particulier, tel que l'ordre alphabétique ou de déclaration. Votre code ne doit pas dépendre de l'ordre dans lequel les propriétés sont renvoyées, car cet ordre varie.

Pour être quelque peu utile, ils ont choisi de classer les paramètres par ordre alphabétique, mais malheureusement, il n'y a aucun moyen de s'assurer que les paramètres apparaissent dans l'ordre dans lequel ils se trouvent dans la classe.




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