+ Recursos de formación: MSDN Virtual Labs!

Cómo muchos sabréis, a través del portal de MSDN se acceden a una cantidad ingente de recursos sobre tecnologías y plataformas Microsoft. En esta ocasión, quería llamaros la atención en torno a los virtual labs disponibles en MSDN, que son numerosos y fundamentales para estar al día y comprender estas tecnologías y plataformas…que no se diga que no hay recursos. Y entre los labs especialmente destacados os encontraréis los de Windows 7, BizTalk Server 2009 o Internet Explorer 8.

SharePoint 2010: Trabajo con LINQ To SharePoint (II)!

Siguiendo con la serie de post sobre el nuevo proveedor de LINQ para SharePoint (puedes ver la primera parte en este enlace), en esta ocasión vamos a ver como LINQ To SharePoint facilita la creación, actualización y borrado de elementos de lista de una forma similar a LINQ To SQL o ADO.NET Entity Framework cuando se trabaja con bases de datos. Lo primero es crear un proyecto de aplicación de consola y añadir las referencias necesarias:

  • Microsoft.SharePoint.dll
  • Microsoft.SharePoint.Linq.dll

 image

En este caso estoy utilizando una aplicación de consola, por lo que será necesaria añadir las correspondientes directivas using para usar los espacios de nombres de Microsoft.SharePoint y Microsoft. SharePoint.Linq. Además, si recordáis el post previo sobre LINQ To SQL, es necesario añadir el archivo .cs generado con SPMetal a partir de la Url del Sitio de SharePoint con el que estamos trabajando. A partir de aquí, realizar las operaciones comentadas implica:

  • Crear una instancia del objeto DataContext contenido en el archivo .cs generado con SPMetal. Al tratarse de una aplicación de consola tendremos que especificar la Url del Sitio de SharePoint.
  • Crear una instancia de tipo EntityList<> a partir de un elemento de la lista que nos interese (en este caso ProductsItem) utilizando para ello el método GetList del objeto DataContext. Este método necesita que le especifiquemos la lista con la que vamos a trabajar (Products).
  • Crear un nuevo elemento en la lista es tan sencillo como crear una instancia de elemento de esa lista, configurar sus propiedades y realizar una llamada a:
    • El método InserOnSubmit() del objeto EntityList comentado. Este método espera la entidad concreta a insertar en la lista.
    • El método SubmitChanges() del objeto DataContext es el que nos permite insertar de forma efectiva el nuevo ítem en la lista.
  • Para actualizar un elemento, basta con realizar una consulta LINQ To SharePoint que contenga el elemento interesado y que se del tipo conveniente (de ahí que se aplique el método de extensión First()), actualizar el elemento devuelto y realizar una llamada a SubmitChanges().
  • Finalmente, el borrado de un elemento es análogo a la creación ya que:
    • En primer lugar tenemos que crear una instancia del objeto a borrar a través de una consulta LINQ To SharePoint.
    • En segundo lugar, llamamos al método DeleteOnSubmit() del objeto EntityList ya comentado. Este método espera el ítem de lista a borrar (el que acabamos de obtener con la consulta LINQ To SharePoint).
    • Finalmente, realizamos el correspondiente SubmitChanges().

El código correspondiente a la explicación anterior es el siguiente:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

using Microsoft.SharePoint;

using Microsoft.SharePoint.Linq;

using Intranet;

 

namespace SPLINQDemo_CA

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                 //CRUD Operations with LINQ To SharePoint

                IntranetDataContext dc =

                    new IntranetDataContext("http://win-lpgjegdoo6f/&quot;);

                EntityList<ProductsItem> Products =

                    dc.GetList<ProductsItem>("Products");

 

                //Insert new product!

                var product = new ProductsItem();               

                product.Title = "Product 3";

                product.Description = "Product # 3";

                product.Amount = "10";

                Products.InsertOnSubmit(product);

                dc.SubmitChanges();

                Console.WriteLine("Producto Insertado …");

                Console.ReadLine();

 

                //Update Product

                var ProductToUpdate = (from p in dc.Products

                                       where p.Title == "Product 3"

                                       select p).First();

                ProductToUpdate.Description = "Product # 3 Updated";

                dc.SubmitChanges();

                Console.WriteLine("Producto Actualizado ….");

                Console.ReadLine();

 

                //Delete Product

                var ProductToDelete = (from p in dc.Products

                                       where p.Title == "Product 3"

                                       select p).First();

                Products.DeleteOnSubmit(ProductToDelete);

                dc.SubmitChanges();

                Console.WriteLine("Producto Borrado …");

                Console.ReadLine();

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            Console.ReadLine();

        }

    }

}

Sin más, ya sólo falta comprobar que la inserción, actualización y borrado en la lista funcionan como se espera:

image image image

Y hasta aquí llega este segundo post sobre LINQ To SharePoint. Espero que os haya resultado interesante.