-1

Entity Framework 5 を使用しています。クエリ (DbQuery?) を作成し、DbContext で実行したいと考えています。出来ますか?

通常、次のようなクエリを実行します。

using (var db = new MyDbContext())
{
    var nike = db.Products.Where(p => p.Brand == "Nike").OrderBy(p => p.Name);
    foreach (var product in nike)
    {
        Debug.WriteLine(product.Name);
    }
}

しかし、DbContext を作成する前にクエリを作成し、実際にデータを取得したいときにクエリを DbContext インスタンスにアタッチすることはできますか?

4

2 に答える 2

2
public IEnumerable<Products> GetProduct(MyDbContext db){
   //query created before-hand
   var nike = db.Products.Where(p => p.Brand == "Nike").OrderBy(p => p.Name);
   return nike;
}

//and then in your method:
using (var db = new MyDbContext()){
   var nike = GetProduct(db); //MyDbContext object attached here.
   foreach(var product in nike){
     Debug.WriteLine(product.Name);
   }
}

多分これがあなたがやりたかったことですか?私はわかりません。

于 2013-11-08T18:25:21.983 に答える
0

解決策は次のとおりです。

public Func<bool,Products> Filter()
{
    return i => i.Brand == "Nike"
}
public Func<bool,Products> Filter(string brandName)
{
    return i => i.Brand == brandName;
}


//usage:
db.Products.Where(Filter());
//or
db.Products.Where(Filter("Nike"));

現在、私はテストできませんが、使用する必要があるかもしれませんExpression<Func<bool,Brand>>
誰かがそれを確認できますか?

于 2013-11-08T19:51:09.797 に答える