WebServices, LINQ e Entity Framework (EF4)

WebServices
Fonte: http://img.viralpatel.net/2009/06/restful-web-services-rest.gif

Olá pessoal, tudo bom?

Quando desenvolvemos WebServices em ASP.NET que devolvem resultados de instruções de seleção (select) a partir de métodos do ADO.NET, geralmente realizamos o retorno dos dados do WebMethod a partir de DataSet, que por padrão, é a forma como os WebServices serializam os dados para devolução via XML.

Já quando desejamos utilizar LINQ através do Entity Framework 4 (EF4) em métodos de um WebServices, a coisa muda um pouco de figura, visto que a consulta LINQ provavelmente irá retornar resultados através de IEnumerables ou IQueryables e, neste caso, uma das alternativas que temos é retornar os dados através de listas de tipos genéricos, de tipos primitivos ou mesmo de classes mapeadas pelo Entity Data Model.

Vejam os exemplos abaixo:

Exemplo 1: Realizando uma consulta LINQ e retornando os dados via WebServices através de uma lista do tipo string


[WebMethod(Description = "Retorna uma lista <string> contendo o nome de todos os fabricantes")]
public List<string> ObterFabricantes()
{
   List<string> lista = new List<string>();
   using (AutoPecasEntities contexto = new AutoPecasEntities())
   {
      var dados = (from fabricantes in contexto.pecas_fornecedores
                   select fabricantes.fabricante).Distinct();
      foreach (string x in dados)
         lista.Add(x);
      return lista;
   }
}

Exemplo 2: Realizando uma consulta LINQ e retornando uma lista de objetos da entidade “pecas_fornecedores”


[WebMethod(Description = "Recebe por parametro o nome do fabricante e devolve a lista das peças fornecidas por ele.")]
public List<pecas_fornecedores> ObterPecas(string fabricante)
{
   using (AutoPecasEntities contexto = new AutoPecasEntities())
   {
      List<pecas_fornecedores> dados = (from fornecedor in contexto.pecas_fornecedores
                                        where fornecedor.fabricante == fabricante
                                        select fornecedor).ToList();
      return dados;
   }
}

Posts relacionados:

1. LINQ, Entity Framework e Tipos Anônimos
2. LINQ e Entity Framework

3. Operações CRUD com Entity Framework
4. ADO.NET Entity Framework – Introdução + Exemplo prático

Caso tenham mais alguma dúvida sobre o assunto, por favor, questionem.

Um grande abraço a todos,
Eduardo Henrique Rizo

[twitter-follow screen_name='eduardorizo' show_count='yes']

1 comentário em “WebServices, LINQ e Entity Framework (EF4)”

  1. Pingback: LINQ, tipos anônimos e retorno de dados « Blog do Eduardo H. Rizo

Deixe um comentário