2015-09-24 4 views
5

Я пытаюсь создать общую функцию для получения данных из БД с использованием Entity Framework. Я передаю id в качестве ключа для извлечения. Для этого я написал следующую функцию:Общая функция для получения данных с использованием структуры сущности

public T Get<T>(object id) where T : class 
{ 
    T item = null; 

    using (var context = MyContext()) 
    { 
     item = context.Set<T>().Find(id); 
    } 

    return item; 
} 

Функция работает без проблем. Но как я могу изменить эту функцию для получения данных, если я не передаю первичный ключ в качестве фильтра?

ответ

10

Вы можете передать предикат и использовать .FirstOrDefault().

public T Get<T>(Expression<Func<T, bool>> predicate) 
    where T : class 
{ 
    T item = null; 
    using (var context = MyContext()) 
    { 
     item = context.Set<T>().FirstOrDefault(predicate); 
    } 
    return item; 
} 

var customer = context.Get<Customer>(x => x.Name == "Bob"); 
+0

Спасибо .. это то, что я ищу – Optimus

Смежные вопросы