octobre
2009
J’avais complètement oublié de le mentionner dans mon article précédent sur SubSonic, mais, de toutes les nouveautés de SubSonic dans la version 2.1, une des plus utiles quand on en à besoin est l’objet InlineQuery.
En effet, comme je le montrais (et si vous n’avez pas lu l’article, allez-y maintenant ), SubSonic peut se révéler très puissant pour travailler avec des opérations de type CRUD, ainsi que pour le mapping des objets de la base de données avec les objets .net, mais qu’en est-il des requêtes « tordues » ou « bizarres » avec lesquelles on est régulièrement forcé de travailler (et je ne vous parle pas des requêtes dont on hérite avec la maintenance d’une application vieille de quelques années :-/.) ?
Est-ce que je ne vais pas avoir aussi vite fait de tout me taper à la main ?
Dans les versions précédentes, on avait grosso modo deux choix :
- Créer une vue ou une procédure stockée (en fonction de l’action), et appeler la vue ou l’action à partir de SubSonic
- Avoir un moyen annexe pour « shooter » des requêtes directement dans la base (oui, un bon vieux select, avec un datareader, des dataset, des connections, t tout le toutim.)
Depuis la version 2, on à enfin un nouveau choix, plus « propre », et surtout plus rapide à mettre en ouvre, vous l’aurez deviné, l’objet InlineQuery.
En terme de code, il suffit de faire :
.ExecuteAsCollection<ContactCollection>(« SELECT * from Contact Where surname = @surname », « Vialatte »);
(Ceci est évidemment un exemple simpliste, mais c’est pour donner une idée).
Dans l’exemple du dessus, le @surname va permettre à SubSonic de créer une requête paramétrée directement. Si on avait voulu ajouter plus de paramètres, la fonction attends un tableau d’objets, on peut donc se lâcher ;).
InlineQuery propose aussi des méthodes renvoyant des DataReader, des DataSets, des scalaires (wow, un ExecuteScalar<T> ), et même un ExecuteTypedList, pour renvoyer une liste de T.
Voila, facile, pas cher, que du bonheur
Articles récents
Archives
- janvier 2014
- septembre 2013
- août 2013
- mai 2013
- avril 2013
- janvier 2013
- août 2012
- juin 2012
- mai 2012
- avril 2012
- mars 2012
- novembre 2011
- septembre 2011
- août 2011
- juillet 2011
- juin 2011
- mai 2011
- avril 2011
- février 2011
- janvier 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009