La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Mario Cortés Flores Consultor SharePoint en Renacimiento Coordinador SUGES Coautor de:

Presentaciones similares


Presentación del tema: "Mario Cortés Flores Consultor SharePoint en Renacimiento Coordinador SUGES Coautor de:"— Transcripción de la presentación:

1

2 Mario Cortés Flores mcortes@renacimiento.com http://blogs.renacimiento.com/mcortes Consultor SharePoint en Renacimiento Coordinador SUGES Coautor de:

3 LINQ to SharePoint Relaciones entre listas SPMetal Modificación de datos Post-Deployment Extension LINQ To SharePoint fuera de SharePoint!! Limitaciones y rendimiento

4 Permite manejar las listas de SharePoint desde clases de.NET Las listas se convierten en entidades y las columnas en propiedades Se implementa con Microsoft.SharePoint.Linq var clientesDeMadrid = from customer in Customers where customer.City == "Madrid" where customer.City == "Madrid" select customer; select customer;

5 Hasta ahoraBeneficios con LINQ Las consultas CAML son complejas Propenso a errores Realizar consultas cruzadas es complejo Mejor rendimiento Sintaxis de consultas más natural Los datos están fuertemente tipados Es sencillo realizar consultas cruzadas SPList listaDeFacturas = SPContext.Current.Web.Lists["Facturas"]; SPQuery spQuery = new SPQuery(); spQuery.Query = string.Format(@" spQuery.Query = string.Format(@" 1 1 ", listaDeFacturas.Fields["Cliente"].InternalName); ", listaDeFacturas.Fields["Cliente"].InternalName); GridView1.DataSource = listaDeFacturas.GetItems(spQuery); GridView1.DataBind(); ClientesDataContext dxClientes = new ClientesDataContext("http://win- u6irsic8d95/sitios/linq/"); var listaFacturas = from facturas in dxClientes.Facturas where facturas.Cliente.CIF == "11111111H" select new { facturas.Id, facturas.Título, NombreCliente = facturas.Cliente.Título, facturas.Cliente.Ciudad }; GridView1.DataSource = listaFacturas; GridView1.DataBind();

6 Las consultas LINQ se transforman en consultas CAML Podemos seguir trabajando con CAML Se han ampliado las clases: SPQuery SPSiteDataQuery Para construir las entidades de LINQ se utiliza el ejecutable SPMetal

7 Las relaciones entre listas se construyen mediante columnas de tipo Lookup Las columnas Lookup se han mejorado incorporando: Integridad referencial entre listas Projected fields Posibilidad de hacer JOINS Consideraciones de seguridad

8 Se ha modificado CAML para soportar JOINS aunque es más fácil hacerlo desde LINQ Para hacer un JOIN es necesario que al menos una de las columnas sea del tipo Lookup var listaFacturas = from facturas in dxClientes.Facturas join clientes in dxClientes.Clientes join clientes in dxClientes.Clientes on facturas.Cliente.Id equals clientes.Id on facturas.Cliente.Id equals clientes.Id select new { select new { facturas.Id, facturas.Título, NombreCliente = clientes.Título };

9 Construye las entidades y el contexto de LINQ to SharePoint a partir de la estructura de un sitio Se encuentra en …\14\bin\SPMetal.exe Admite un fichero XML para personalizar la generación SPMETAL.EXE /web:http://win-u6irsic8d95/sitios/linq /namespace:Clientes /code:SPClientes.cs

10 Se puede realizar acciones de edición, nuevo y borrado Aconsejable hacer un solo SubmitChanges para todos los cambios Mantiene un control de concurrencia, por defecto optimista Se puede extender la modificación para agregar nuestra propia funcionalidad

11 Extiende la estructura de las listas sin recompilar el assembly original mediante ICustomMapping Podemos mapear nuevas columnas a nuevas propiedades Maneja conflictos producidos en las nuevas columnas

12 LINQ To SharePoint puede ejecutarse fuera del contexto del servidor (Client Side Code) Data Services, utiliza la dll Microsoft.SharPoint.Linq.Dataservices MO cliente, mediante LINQ to Object

13 Cualquier consulta que pueda traducirse directamente a CAML es eficiente Algunas operaciones de LINQ no están soportadas FacturasDocumento factura = dxClientes.Facturas.First( f => f.Cliente.CIF == "11111111H"); FacturasDocumento factura = dxClientes.Facturas. ToList ().First( f => f.Cliente.CIF == "11111111H"); Ineficiente Eficiente

14 Más eficiente si desactivamos el tracking Máximo de 6 projected fields en join Límite en el número de elementos devueltos: Usuario normal: 5.000 elementos Superusuario: 20.000 elementos

15 Mario Cortés Flores mcortes@renacimiento.com http://blogs.renacimiento.com/mcortes

16 ©2009 Microsoft, Microsoft Dynamics, the Office logo, and Your potential. Our passion. are trademarks of the Microsoft group of companies. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Descargar ppt "Mario Cortés Flores Consultor SharePoint en Renacimiento Coordinador SUGES Coautor de:"

Presentaciones similares


Anuncios Google