C# 是否可以在没有DbContext实例的情况下生成查询?
我使用的是实体框架5。我想构建一个查询(DbQuery?),然后在DbContext上执行它。可能吗 通常,我会执行如下查询:C# 是否可以在没有DbContext实例的情况下生成查询?,c#,.net,entity-framework,dbcontext,C#,.net,Entity Framework,Dbcontext,我使用的是实体框架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(
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实例?public IEnumerable GetProduct(MyDbContext db){
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);
}
}
//手工创建的查询
var nike=db.Products.Where(p=>p.Brand==“nike”).OrderBy(p=>p.Name);
返回nike;
}
//然后在你的方法中:
使用(var db=new MyDbContext()){
var nike=GetProduct(db);//此处附加MyDbContext对象。
foreach(nike的var产品){
Debug.WriteLine(产品名称);
}
}
也许这就是你想做的?我不确定。解决方案如下:
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"));
public Func Filter()
{
返回i=>i.品牌==“Nike”
}
公共Func筛选器(字符串brandName)
{
返回i=>i.Brand==brandName;
}
//用法:
db.Products.Where(Filter());
//或
db.Products.Where(过滤器(“Nike”));
目前我无法测试,但可能您必须使用表达式
有人可以确认吗?也可以使用此解决方案: