
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