Consultas a SharePoint Foundation con los servicios de datos de ADO.NET

Última modificación: jueves, 17 de junio de 2010

Hace referencia a: SharePoint Foundation 2010

En este artículo
Ventajas y desventajas del uso de ADO.NET Data Services Framework para consultar desde un cliente
Tipos de aplicaciones clientes admitidas
Instalación de los servicios de datos de ADO.NET en el servidor de desarrollo
Programación de los servicios de datos de ADO.NET con un origen de datos de SharePoint

En este tema se proporciona información general concisa acerca de cómo consultar datos de lista en Microsoft SharePoint Foundation mediante Marco de trabajo de los servicios de datos de ADO.NET, un servicio web de transferencia de estado representacional (REST, Representational State Transfer). En este tema se presupone una familiaridad básica con este marco. Para obtener información acerca de cómo programar con él, vea el tema de introducción a los servicios de datos de ADO.NET y sobre el uso de los servicios de datos de Microsoft ADO.NET.

También puede agregar, modificar y eliminar datos mediante el uso del marco.

Ventajas y desventajas del uso de ADO.NET Data Services Framework para consultar desde un cliente

La ventaja principal del uso de ADO.NET Data Services Framework para consultar datos de SharePoint Foundation desde una aplicación cliente consiste en que los datos de lista de las consultas están fuertemente tipados. En el modelo de objetos cliente de SharePoint Foundation, dos objetos ListItem cualquiera son del mismo tipo, aunque representen elementos de tipos de listas considerablemente diferentes. Pero los servicios de datos de ADO.NET usan una asignación relacional de objetos que crea un tipo para cada lista de un contexto de datos de destino (sitio web). Por ejemplo, un elemento de una lista de anuncios es de un tipo denominado AnnouncementsItem y un elemento de una lista de tareas es de un tipo denominado TasksItem.

La desventaja principal de usar el marco de los servicios de datos de ADO.NET para consultar datos de SharePoint Foundation desde una aplicación cliente es que solo se pueden recuperar datos de lista y escribir a otras listas. No se puede tener acceso a otros tipos de datos de SharePoint con los servicios de datos de ADO.NET.

Tipos de aplicaciones clientes admitidas

Prácticamente cualquier tipo de aplicación cliente puede usar los servicios de datos de ADO.NET para obtener acceso a datos de SharePoint Foundation, incluidas las aplicaciones de consola, las aplicaciones de Windows Forms, las aplicaciones de Windows Presentation Foundation y las aplicaciones de Silverlight.

Instalación de los servicios de datos de ADO.NET en el servidor de desarrollo

Si los servicios de datos de ADO.NET todavía no están instalados en el servidor de desarrollo, descargue la versión apropiada para el sistema operativo:

SugerenciaSugerencia

Hay una versión de este servicio llamada "WCF Data Services" orientada a Microsoft .NET Framework 4. Dado que SharePoint está orientado a Microsoft .NET Framework 3.5, no se debe usar la versión "WCF".

Programación de los servicios de datos de ADO.NET con un origen de datos de SharePoint

La programación de los servicios de datos de ADO.NET es esencialmente la misma, independientemente del origen de datos. En el proyecto de Microsoft Visual Studio 2010, debe agregar un servicio RESTful mediante la especificación de su dirección URL. Para SharePoint Foundation, la dirección URL es siempre http://servidor/ruta_de_acceso_a_sitio/_vti_bin/listdata.svc, donde ruta_de_acceso_a_sitio es la ruta de acceso al sitio web a cuyos datos de lista obtendrá acceso el cliente. Se le pedirá que especifique un nombre de la referencia de servicio.

Al agregar la referencia, los servicios de datos de ADO.NET crean una asignación relacional de objetos a las listas del sitio web y la almacena en un archivo denominado reference.cs. Se crea una clase denominada nombre del sitioDataContext, donde nombre del sitio es el nombre del sitio web, derivada de la clase DataServiceContext. Esta clase tiene propiedades para cada lista del sitio web. Cada una de estas propiedades es de tipo DataServiceQuery<TElement> donde el parámetro de tipo es el tipo de elemento que rellena la lista. Estos tipos de elemento se declaran a sí mismos en reference.cs. Cada uno de ellos se denomina nombre de listaItem, donde nombre de lista es el nombre de una lista. Por ejemplo, AnnouncementsItem. Cada uno de estos tipos de elemento tiene una propiedad para cada campo (columna) de la lista.

Todo lo que contiene el archivo reference.cs se encuentra dentro de su propio espacio de nombres. Éste se construye mediante la concatenación del espacio de nombres del proyecto, como el espacio de nombres especificado en un archivo program.cs (o un archivo form.cs para una aplicación de Windows Forms) y el nombre proporcionado a la referencia de servicio. Por ejemplo, si el espacio de nombres del proyecto es Contoso.SharePoint.Client y MySiteService es el nombre proporcionado a la referencia de servicio, el espacio de nombres de la asignación relacional de objetos será Contoso.SharePoint.Client.MySiteService.

La lógica del programa se crea del mismo modo en que lo haría con cualquier otro origen de datos de los servicios de datos de ADO.NET. Comience agregando una instrucción using para el nombre corto del espacio de nombres de la referencia de servicio dentro de los corchetes del espacio de nombres del archivo de código donde se incluirá la lógica, como program.cs o form.cs. A continuación se muestra un ejemplo.

namespace Contoso.SharePoint.Client
{
    using MySiteService;
}

El siguiente paso principal consiste en obtener una referencia a un objeto de contexto de datos que actúe como puerta de enlace a los objetos de la asignación relacional de objetos. En el siguiente ejemplo, MyServer es el nombre del servidor de desarrollo y MySite es el nombre de un sitio web, por lo tanto MySiteDataContext es una clase definida en la asignación relacional de objetos.

MySiteDataContext msdc = new MySiteDataContext(new Uri("http://MyServer/MySite/_vti_bin/listdata.svc"));

Posteriormente, podrá consultar cualquier lista del sitio web con consultas de sintaxis LINQ, como en este ejemplo.

var excitingAnnouncements = from announcement in msdc.Announcements
                            where announcement.Title.EndsWith("!")
                            select announcement;

Si el código realiza varias consultas en la misma lista, considere la posibilidad de leer la lista completa en un objeto List<T> local en primer lugar y usar ese objeto como origen para las consultas futuras. A continuación se muestra un ejemplo.

List<AnnouncmentsItem> allAnnouncements = msdc.Announcements.ToList();

var excitingAnnouncements = from announcement in allAnnouncements
                            where announcement.Title.EndsWith("!")
                            select announcement;

Puede guardar cambios en los datos, realizados en la aplicación cliente, en la lista SharePoint Foundation mediante el método SaveChanges(). A continuación se muestra un ejemplo.

var excitingAnnouncements = from announcement in msdc.Announcements
                            where announcement.Title.EndsWith("!")
                            select announcement;

foreach (var announcement in excitingAnnouncements)
{
    announcement.Title += "!!";
}
msdc.SaveChanges();