LINQ to Sharepoint
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?