LINQ To SharePoint–Passo-a-passo de como utilizá-lo em sua web part

Introdução

Os desenvolvedores sempre tiveram uma dificuldade na hora de desenvolver seus aplicativos: trabalhar com dados fracamente tipados. Desde a utilização de RecordSets, lá no VB6, até recursos mais novos como o ADO.NET, obter dados do banco de dados ou outra fontes de conteúdo sempre indexou-se os objetos pelo nome da coluna, assim como no exemplo: tabelaClientes[“Nome”] para obter o nome do cliente do banco de dados. Se o campo “Nome” mudar na tabela o programa irá compilar normalmente, mas irá gerar um erro em tempo de execução, ou seja, muito difícil de ser percebido pelos desenvolvedores.

Esse assunto vem evoluindo cada vez mais, uma das primeiras iniciativas foi o Hibernate, que fazia o mapeamento de entidade relacional em modelo de objetos. Esse tipo de recurso foi muito aguardado e com o passar do tempo foi evoluindo. Existiram várias iniciativas até o surgimento do LINQ, que é um sistema de consulta em conjuntos de dados que é fortemente tipado.

Um sistema fortemente tipado consiste na utilização dos objetos via programação onde não se usa string ou inteiro para indexar a coluna, mas sim o próprio nome. Exemplo: cliente.Nome. Se algum campo for mudado o sistema não irá mais compilar, orientando o desenvolvedor sobre o que ele precisa mudar. Essa alteração no paradigma de progração aumenta em muito mais produtividade e menor incidência de erro.

O LINQ é um mecanismo que possui várias extensões, entre elas LINQ to Objects, LINQ to Entities (que agora virou o Entity Framework), LINQ to XML, LINQ to SQL e agora o LINQ to SharePoint.

O LINQ to SharePoint é a especialização do LINQ para ser utilizado no SharePoint, com ele podemos trabalhar com conteúdo SharePoint usando rotinas fortemente tipadas. Neste artigo vamos explicar como utilizar essa solução.

Geração do arquivo de código-fonte – SPMetal

Para utilizarmos o LINQ to SharePoint é necessário executar um utilitário de linha de comando chamado SPMetal.exe, que está no diretório BIN do SharePoint (c:\program files\common files\microsoft share\web server extensions\14\bin). Ao digitar SPMetal no prompt de comando do Windows um breve resumo da sintaxe e parâmetros é apresentado, conforme imagem 01.

Imagem 01: Execução do SPMetal.exe sem parâmetros para mostrar mais detalhes

A sintaxe do comando para a geração da classe para utilizar nestes artigo é a descrita na listagem 01.

SPMetal /web:http://evento.azeroth.com /namespace: LINQToSharePoint /code:Entidades.cs

Listagem 01: Comando para a geração da classe para ser utilizada pelo LINQ

Esta linha de comando irá fazer com que o SPMetal leia toda a estrutura de conteúdo do site evento.azeroth.com e transformará essas estruturas em uma classe, devidamente configuradas para utilização do LINQ, com namespace LINQToSharePoint, armazenado em um arquivo chamado Entidades.cs. Conforme o exemplo, o arquivo cs (sintaxe C#) pode ser localizado no diretório BIN.

Utilização da Classe Gerada

Para utilizar a classe gerada pelo SPMetal.exe vamos criar um projeto SharePoint no Visual Studio e depois criar uma web part para conter as regras de négócio, que utilizam LINQ to SharePoint.

O primeiro passo é a crição de um novo projeto no Visual Studio 2010 com base no template Empty SharePoint Project para , conforme a imagem 02, com o nome LINQToSharePoint.

Imagem 02: Criação de um projeto novo no Visual Studio

Após o projeto criado vamos adicionar o arquivo Entidades.cs gerado. As imagem 03 e 04 motram os passos para fazer isso.

Imagem 03: Adicionando o arquivo Entidades.cs ao projeto

Imagem 04: Selecionando o arquivo Entidades.cs gerado pelo SPMetal

O próximo passo é adicionar a referência do assembly Microsoft.SharePoint.Linq.dll, que está no diretório c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Linq.dll.

Para construir as regras de negócio e a interface com o usuário vamos criar uma visual web part chamada PalestrantesNovosWebPart, conforme a imagem 05.

Imagem 05: Criando a visual web part

Neste exemplo vamos fazer uma demonstração de uma web part que exibe somente os palestrantes ativos.

A listagem 02 mostra em detalhes toda a implementação da web part de palestrantes ativos.

 

using System;

using System.ComponentModel;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.Linq;

using System.Linq;

using System.Text;

namespace LINQ_to_SharePoint

{

    [ToolboxItemAttribute(false)]

    public class PalestrantesAtivosWebPart : WebPart

    {

        LiteralControl controle;

        protected override void CreateChildControls()

        {

            controle = new LiteralControl();

            this.Controls.Add(controle);

        }

        protected override void OnPreRender(EventArgs e)

        {

            // Criando o contexto para uso do LINQ

            EntidadesDataContext entidades = new EntidadesDataContext (SPContext.Current.Site.Url);

            // Executando a query LINQ no modelo de dados do SharePoint

            var palestrantesAtivo = from p in entidades.Palestrantes

                                                  where p.Ativo == true

                                                  select p.Título;

            StringBuilder listaPalestrantes = new StringBuilder();

            string textoPalestrantes = “O palestrante {0} está ativo”;

            // Percorrendo os resutrados da query e gerando o conteúdo para o usuário

            foreach (var palestrante in palestrantesAtivo)

            {

                listaPalestrantes.Append(string.Format(textoPalestrantes, palestrante));

                listaPalestrantes.Append(“<BR />”);

            }

            controle.Text = listaPalestrantes.ToString();

        }

    }

}

Listagem 02: Código fonte da web part de palestrantes ativos

Com a web part pronta e implantada no SharePoint, o próximo passo é adicioná-la na página. Para isso coloque a página em edição e insira a web part. Procure na categoria “Custom” e insira a web part PalestrantesAtivosWebPart, a imagem 06 dá mais detalhes e a imagem 07 mostra o resultado final.

Imagem 06: Adicionando a web part PalestrantesAtivosWebPart na página 

 

Imagem 07: Visualizando o resultado da web part na página

Para conferir o resultado vamos acessar a lista Palestrantes e ver os dados existentes, como na imagem 08.

Imagem 08: Conferindo os dados na lista de Palestrantes para verificar que a consulta exibiu os dados corretamente

Considerações Finais

O LINQ e o LINQ to SharePoint vieram para ajudar os desenvolvedores a criar soluções com menos erros e maior facilidade de explorar as classes de dados. Uma maior qualidade de desenvolvimento é obtida, visto que vários erros podem ser descobertos em tempo de compilação. Como resultado temos maior produtividade e código mais legível.

Referências

· Using LINQ to SharePoint

http://msdn.microsoft.com/en-us/library/ee535491.aspx

· How to: Query Using LINQ to SharePoint

http://msdn.microsoft.com/en-us/library/ee538250.aspx

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: