2015-09-24 14 views
5

私は、Entity Frameworkを使用してDBからデータを取得する汎用関数を作成しようとしています。私は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

関連する問題