-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 回答