Question

Étant donné une déclaration simple, telle que:

<statement id="SelectProducts" resultMap="???">
  SELECT * FROM Products
</statement>

Est-il possible d'obtenir une liste d'objets de dictionnaire où les clés sont les noms de colonnes? c'est à dire.

var list = Mapper.QueryForList<IDictionary<string,string>>("SelectProducts", null);

IDictionary<string, string> dict = list[0];
// dict["id"] == "1"
// dict["name"] == "Some Product Name"
// dict["price"] == "$9.99"
// etc.

Je voudrais généraliser le résultat d'une requête pour gérer un nombre quelconque de colonnes / noms de colonnes sans mapper des propriétés spécifiques sur une classe.

Je me rends compte que l'exemple ici échouerait puisqu'un jeu de résultats peut avoir des noms de colonnes dupliqués (ou nuls). J'ai pensé à une classe de résultats contenant une liste indexée de paires clé-valeur. L'important est de conserver les informations de la colonne quelque part.

Était-ce utile?

La solution

Vous pouvez le faire en définissant l'attribut de classe sur HashTable dans la configuration de resultMap. Plus de détails disponibles ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top