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']
Pingback: LINQ, tipos anônimos e retorno de dados « Blog do Eduardo H. Rizo