SharePoint 2010: Como hacer Joins entre listas de diferentes sitios con LINQ To SharePoint!

Si queremos hacer una consulta de LINQ To SharePoint en la que incluyamos Joins entre listas de diferentes sitios de una misma colección de sitios nos encontraremos conque inicialmente esto no es posible debido a que SPMetal genera las entity clasess relativas a un único sitio, de manera que si una lista de un sitio incluye un lookup a una lista de otro sitio no se generará la correspondiente entidad. En su lugar, SPMetal generará un valor ID para el elemento en la lista relacionada. Esto implica que para poder hacer un Join entre listas de diferentes sitios tendremos que seguir los siguientes pasos:

  • Mover de forma temporal las listas en base a las que vamos a definir las consultas al mismo sitio y generar las Entity Clasess con SPMetal.
  • Usar el método DataContext.RegisterList para indicar al runtime que una de las listas no pertenece al sitio actual.

Un ejemplo de esta idea, es la siguiente:

   1: using (ManufacturingSiteDataContext context = new ManufacturingSiteDataContext("http://localhost/sites/manufacturing/construction"))

   2: {

   3:   context.RegisterList<Construction.ProjectsItem>("Projects",   

   4:     "/sites/Manufacturing", "Projects");

   5:  

   6:   var results = from projectItem in context.PriorityProjects

   7:                 select new { projectItem.Title, 

   8:                              projectItem.ExecutiveSponsor, 

   9:                              projectItem.Project.Leader };

  10:  

  11:   foreach (var item in results)

  12:   {

  13:     output.AppendFormat("Title: {0}  Sponsor: {1}  Leader: {2}", 

  14:                             item.Title, item.ExecutiveSponsor, item.Leader);

  15:   }

  16: }

Fuente: SharePoint Guidance http://msdn.microsoft.com/en-us/library/ff650022.aspx

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2010: Como hacer Joins entre listas de diferentes sitios con LINQ To SharePoint!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *