Usuário com melhor resposta
Consulta Entity - IList<TSource> GetWhere(Expression<Func<TSource, bool>> predicate)

Pergunta
-
O projeto baseados em repository pattern, Elo.Framework.Data que está codeplex tem o método abaixo que atenção. Como utilizo esse médoto?
Desde já grato.
public interface IRepository<TSource> where TSource : class
{IList<TSource> GetWhere(Expression<Func<TSource, bool>> predicate);
}
/// <summary>
/// Retorna os objetos da entidade manipulada de acordo a condição informada.
/// </summary>
/// <param name="predicate">Representa a condição a ser testada pela entidade</param>
/// <returns>Retorna uma lista dos objetos</returns>
public IList<TSource> GetWhere(Expression<Func<TSource, bool>> predicate)
{
try
{
IList<TSource> result = Context.CreateObjectSet<TSource>().Where(predicate).ToList();
return result;
}
catch (Exception ex)
{
if (ex.InnerException != null)
throw new Exception(ex.InnerException.Message, ex);
throw new Exception(ex.Message, ex);
}
}- Editado Ronaldo de Oliveira Peixoto terça-feira, 26 de junho de 2012 19:09 retirado o parametro (string expand) da interface
Respostas
-
Olá Ronaldo,
No caso vc precisa passar uma expressão lambda com uma clausula que deseja que seja verdadeira. Por exemplo, no código abaixo um exemplo de como implementar a interface IRepository.
public interface IRepository<TSource> where TSource : class { IList<TSource> GetWhere(Expression<Func<TSource, bool>> predicate); } public class Customer { public string Nome { get; set; } } public class MyRepository : IRepository<Customer> { public IList<Customer> GetWhere(Expression<Func<Customer, bool>> predicate) { // Retorna dados dos clientes...
} }
E aqui, um exemplo de como executar uma consulta:
MyRepository rep = new MyRepository(); rep.GetWhere(p => p.Nome == "TESTE");
Veja que estou passando por parâmetro uma Lambda com uma condição a ser atendida, no caso 'p => p.Nome == "TESTE"'.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique
Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil- Marcado como Resposta Ronaldo de Oliveira Peixoto quinta-feira, 28 de junho de 2012 00:15
Todas as Respostas
-
Olá Ronaldo,
No caso vc precisa passar uma expressão lambda com uma clausula que deseja que seja verdadeira. Por exemplo, no código abaixo um exemplo de como implementar a interface IRepository.
public interface IRepository<TSource> where TSource : class { IList<TSource> GetWhere(Expression<Func<TSource, bool>> predicate); } public class Customer { public string Nome { get; set; } } public class MyRepository : IRepository<Customer> { public IList<Customer> GetWhere(Expression<Func<Customer, bool>> predicate) { // Retorna dados dos clientes...
} }
E aqui, um exemplo de como executar uma consulta:
MyRepository rep = new MyRepository(); rep.GetWhere(p => p.Nome == "TESTE");
Veja que estou passando por parâmetro uma Lambda com uma condição a ser atendida, no caso 'p => p.Nome == "TESTE"'.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique
Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil- Marcado como Resposta Ronaldo de Oliveira Peixoto quinta-feira, 28 de junho de 2012 00:15
-