Linq To WIQL
Pour ceux qui ne connaissent pas les entrailles de Team Foundation Server, WIQL est l'abréviation de "Work Item Query Language". La prochaine version de Fissum en cours de finalisation va faire apparaître une grosse nouveauté: la possibilité d'utiliser l'API de Fissum et de bénéficier de l'ensemble de ses fonctionnalités pour vos propres programmes. La plus parlante sans aucun doute est l'API Linq pour WIQL qui permet d'intérroger le référenciel de Work Item en Linq. Par exemple la requête suivante va rechercher l'ensemble des work items contenant le mot "fissum" soit dans le titre, la description ou l'historique:
string searchString = "fissum";
var q = (from wi in server.WorkItems()
where
wi.Title.Contains(searchString) ||
wi.History.Contains(searchString) ||
wi.Description.Contains(searchString)
orderby wi.CreatedDate descending
select new { Id = wi.Id, Title = wi.Title, CreatedDate = wi.CreatedDate }
).ToList();
Le WIQL généré est le suivant:
SELECT [System.Id]
FROM WORKITEMS
WHERE ((([System.Title] contains @P0 OR [System.History] contains @P1) OR [System.Description] contains @P2))
ORDER BY [System.CreatedDate] desc
Vous remarquerez que la requête renvoie dans sa clause select que l'ID du work item: pour l'instant cette partie là de la requête n'est nécessaire que pour transposer un wiql à une requête visible dans l'éditeur de requête de visual studio. Quels que soient les paramètres de la clause select (il en faut au moins un) l'API renvoie toujours un workitem.
D'autres nouveautés sont aussi en cours. Il y a plus de détail dans d'autres billets.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :