Arquivo

Posts Tagged ‘SharePoint’

LINQ to Sharepoint

26/03/2009 1 comentário

Depois de um longo tempo, estou de volta!!! Recentemente, um amigo queria algo de Sharepoint em meu blog, aí vai!

O objetivo é executar uma consulta a uma lista do SharePoint através de WebService com LINQ! Em primeiro lugar é preciso instalar o LinqToSharepoint, produto que ainda não vem integrado ao Visual Studio, e está disponível no CodePlex. Ah! Ainda está em versão Alpha! J

Começe fazendo o download no codeplex em: http://www.codeplex.com/LINQtoSharePoint . Em seguida, instale e siga as instruções de registro no gac conforme a documentação do codeplex. Agora começa a brincadeira!~

Em um prompt de comando, navegue até o diretório %program files%\BdsSoft LINQ to SharePoint. Lá existe um executável chamado SP Metal. Este utilitário é responsável por ler as definições de uma ou mais listas do sharepoint e gerar uma classe com as propriedades mapeadas. Para utilizá-lo digite, por exemplo:

spmetal -url:[url do sharepoint] -list:[nome da lista]

Ao termino da execução uma classe é gerada. Para utilizá-la crie um projeto no Visual Studio 2008. Atente-se para que o projeto esteja em um framework 3.5. Inclua a classe criada pelo SPMetal e as referências às dll’s Microsoft.Sharepoint.dll e BdsSoft.SharPoint.Linq.dll.


static
void Main(string[] args)

{


SharePointDataContext dc = new
SharePointDataContext(new
Uri(url do sharpoint));

 


var projetos = new
SharePointList<Projetos>(dc);


var res = from p in projetos


where p.Status == Status.Finalizado


select p;

 


Array.ForEach(res.ToArray(), x => Console.WriteLine(x.CriadoEm) );

 


Console.ReadLine();

 

}

Primeiro cria-se um contexto para acesso aos dados através da classe SharepointDataContext. Em seguida, declara-se a lista do SharePoint que será utilizada para realizar a consulta com a classe SharPointList. O tipo genérico utilizado é a classe que foi criada pelo utilitário SPMetal. Nesse exemplo a classe Projetos (referente a lista de projetos). Por fim, basta escrever a query LINQ para acessar os dados da lista.

Se quiser saber o CAML gerado basta acrescentar o seguinte código:

dc.Log = Console.Out;

 

Acredito que ficou um pouco mais simples consumir o WebService do SharePoint, não acham?

Categorias:SharePoint Tags: