En el post anterior os hablaba de Linq to SharePoint y la posibilidad de usarlo en Office 365. Ahora os quiero contar algunas observaciones del funcionamiento. Lógicamente, las pruebas que he hecho sólo son posibles en modo on-premise, pero estoy casi seguro de que se comporta igual en la versión 365.

Antes de nada, tiene que quedar claro que Linq to SharePoint, internamente, funciona con consultas CAML, igual que hace por ejemplo el SPQuery. Podemos ver qué CAML autogenera Linq to SP, asignando la propiedad Log del DataContext. El siguiente snippet es un ejemplo de uso de Linq2SP haciendo debug de la CAML generada:












































Además, el ejemplo anterior realiza una consulta “paginada”, es decir, nos saltamos los primeros 10 elementos, y devolvemos los siguientes 10 (vamos, dame la página 2, cuando paginamos de 10 en 10).

Si vemos la CAML generada, tenemos:










































Fijaros en el último atributo:


2 mil, cien millones, 47… uff, un número muy largo, vamos Sonrisa

Pues sí, la cosa está clara. Cuando usamos Linq 2 SP, aunque paginemos desde LINQ, la CAML generada, y por tanto, la SQL final que llega al servidor de BD, devuelve todos los elementos de la lista, y la paginación, se hace en memoria, lo cual, desde luego, no es lo ideal para temas de rendimiento, así que tenerlo en cuenta.

Por cierto, también estuve haciendo la traza desde el SQL Profiler, y os dejo la SQL tan intuitiva que genera SharePoint:
























Fijaros que sí tenemos un TOP(@NUMROWS), lo que es ideal para sacar un número concreto de elementos, pero el valor de @NUMROWS, vuelve a ser ese número tan largo.

¿Pero, se puede paginar en SharePoint de forma óptima?

La respuesta es que por supuesto que sí, pero considerando que, si queremos hacer una paginación al estilo Google, vamos a tener que dedicarle algo de tiempo, ya que los mecanismos que proporciona SharePoint, nos ponen fácil la paginación “anterior-siguiente” (más aún la de ir a la siguiente página), pero no tan fácil el poder saltar a una página concreta.

Os dejo algunas referencias concretas al respecto:

Respecto a esto que os comentaba, fijaros como el propio webpart de lista de SharePoint, cuando se activa la paginación, sólo ofrece la paginación de anterior y siguiente:

clip_image002_2

Y hasta aquí puedo leer…

Saludos!!