martes, 31 de julio de 2012

Usando SPMetal para SharePoint 2010


 

Introducción

SharePoint 2010 incluye soporte para LINQ el cuál puede ser usado para acceder a Listas / Bibliotecas sin necesidad de usar las complejas CAML queries. SPMetal es una herramienta que se usa para crear las Entity Classes que hacen posible la interacción de las Listas / Librerías mediante LINQ.

Objetivos

El objetivo de este artículo es explicar cómo usar SPMetal para generar las Entity Classes para un proyecto en particular.

Requerimientos

Software Utilizado

El comando SPMetal está dentro del paquete SharePoint Foundation 2010. Por lo cual, para su utilización se requiere tener instalado:

SharePoint Foundation 2010 (o, por supuesto, también SharePoint Server 2010).

Material Elaborado

Descripción

SPMetal es un comando similar al SQLMetal. Mientras el segundo se utiliza para generar las Entity Classes para las tablas de Base de Datos de SQL Server, el primero se utiliza para generar las Entity Classes de las Listas / Librerías de SharePoint basándose en los Content Types (Tipos de Contenido) asociados.

Ubicación

La herramienta se puede encontrar en el directorio de instalación de SharePoint, %ProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\14\BIN.

Parámetros / Opciones

SPMetal utiliza una serie de opciones básicas para la generación de las clases:

Opción web:

Se usa para especificar de que sitio se generarán las clases

SPMetal /web:http://myserver

Cuando el comando de arriba es ejecutado, SPMetal va a buscar todas las Listas del Sitio (parámetro web) y generará una clase por cada una y por cada Content Types (Tipos de Contenido) asociados.

Opciones code y language:

La opción language tiene dos valores válidos: csharp y/o vb y es usado para especificar con qué lenguaje se generaran las clases.
La opción code es usada para especificar la ruta y el nombre del archivo de salida. Si no se especifica entonces la opción language es requerida y se toma como salida por defecto la Consola de Windows. Si está especificado, la opción language pasa a ser opcional dado que SPMetal inferirá el lenguaje basándose en la extensión del archivo.

SPMetal /web:http://myserver /code:c:\myproject\spmetal.cs

Ejecutando el comando anterior se generarán las clases en el archivo SPMetal.cs de la carpeta C:\MyProject. Archivo SPMetal.cs:

   
//------------------------------------------------------------------------------
// 
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.5420
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// 
//------------------------------------------------------------------------------
 
using System;
 public partial class SpmetalDataContext : Microsoft.SharePoint.Linq.DataContext {
 
 #region Extensibility Method Definitions
 partial void OnCreated();
 #endregion
 
 public SpmetalDataContext(string requestUrl) : 
   base(requestUrl) {
  this.OnCreated();
 }
 
 /// 
 /// This Document library has the templates to create 
 /// Web Analytics custom reports for this site collection
 /// 
 [Microsoft.SharePoint.Linq.ListAttribute(Name="Customized Reports")]
 public Microsoft.SharePoint.Linq.EntityList CustomizedReports {
  get {
   return this.GetList("Customized Reports");
  }
 }
 
 /// 
 /// Use the style library to store style sheets, such as CSS or XSL files. 
 /// The style sheets in this gallery can be used by this site or 
 /// any of its subsites.
 /// 
 [Microsoft.SharePoint.Linq.ListAttribute(Name="Style Library")]
 public Microsoft.SharePoint.Linq.EntityList StyleLibrary {
  get {
   return this.GetList("Style Library");
  }
 }
}

NOTA: El archivo anterior variará dependiendo de las Listas y Bibliotecas generadas dentro del sitio como así también del template del mismo. Se adjuntó solamente para ejemplificar el formato del archivo generado por el comando.

Enlaces

Documentación

SPMetal MSDN
Using SPMetal - CodeProject

Software

SharePoint Foundation 2010

SharePoint Server 2010

 

En Baufest, como parte de nuestras buenas practicas en el desarrollo de productos para Sharepoint, solemos usar esta herramienta para facilitar escribir codigo durante el desarrollo y mantenimientos futuros.

Gracias Juan Pablo Addeo por haber colaborado con este artículo.

Seguinos en Twitter
Seguir a @baufest
Seguir a @baufestusa