tfs workitem tfs-workitem tfs-sdk wiql

Cómo utilizar la palabra clave LIMIT tal como se usa en ms sql por WIQL para consultar el artículo de trabajo TFS



workitem tfs-workitem (2)

Estoy trabajando en la API de TFS, no sé si la API TFS tiene elementos como la palabra clave LIMIT o no. Lo necesito para buscar.

Gracias


No hay nada equivalente a la palabra clave SQL LIMIT en TFS WIQL, necesitará implementar el paginado usted mismo.

Un enfoque sería recuperar todos los resultados en el primer acceso, y almacenarlos en caché y paginarlos usted mismo.

Otro enfoque sería construir dinámicamente la consulta WIQL cada vez que sus páginas de usuario. Por ejemplo:

  1. Ejecute una consulta WIQL para devolver solo los ID de la pieza de trabajo que coincidan con la consulta. SELECT [System.Id] FROM WorkItems WHERE <conditions>
  2. Guarda en caché esa lista de ID
  3. Divida esa lista de ID en grupos que coincidan con su tamaño de paginación
  4. Cada vez que sus páginas de usuario soliciten explícitamente el elemento de trabajo por ID. SELECT <fields> FROM WorkItems WHERE [System.Id] IN (10,11,12,13,14,15)

Dependiendo de lo que intente lograr, también debe saber que la API de seguimiento de elementos de trabajo TFS implementa la carga de paginación / vago debajo de las coberturas para los valores de campo, para maximizar los tiempos de respuesta. Puede ver cómo funciona esto adjuntando un sniffer de red y desplazando una consulta grande de Objeto de trabajo en Visual Studio.

Consulte Paginación de valores de campo para obtener más información:

Puede minimizar viajes redondos al servidor seleccionando todos los campos que usará su código. El siguiente código hace un viaje de ida y vuelta para la consulta y un viaje de ida y vuelta para devolver una página de títulos cada vez que se accede a una nueva página.

WorkItemCollection results = WorkItemStore.Query( "SELECT Title FROM Workitems WHERE (ID < 1000)"); foreach (WorkItem item in results) { Console.WriteLine(item.Fields["Title"].Value); }

Si su código accede a un campo que no especificó en la cláusula SELECT, ese campo se agrega al conjunto de campos paginados. Se realiza otro viaje redondo para actualizar esa página para incluir los valores de ese campo.


Tuve el mismo problema. Apliqué Take la secuencia para limitar los resultados puestos a disposición por la consulta. Desafortunadamente, esto no limita los resultados devueltos por la base de datos, pero dado que la característica no es compatible, proporciona una opción viable.

Me.mWorkItems.Query(pstrSQL).OfType(Of WorkItem)().Take(5)

El uso de Skip y Take juntos podría funcionar para paginación.