Odata 具有延迟执行的ASP.NET Web API可查询功能

Odata 具有延迟执行的ASP.NET Web API可查询功能,odata,asp.net-mvc-4,asp.net-web-api,Odata,Asp.net Mvc 4,Asp.net Web Api,我的api方法是否应该始终与底层数据源(ORM的datacontext)绑定,以公开支持oData的可查询功能,从而受益于延迟执行 片段 public class ProductController : ApiController { public IQueryable<Product> Get() { var dbContext = new DBContext(); return dbContext.Product.AsQueryabl

我的api方法是否应该始终与底层数据源(ORM的datacontext)绑定,以公开支持oData的可查询功能,从而受益于延迟执行

片段

public class ProductController : ApiController { 
    public IQueryable<Product> Get() { 
        var dbContext = new DBContext(); 
        return dbContext.Product.AsQueryable(); 
    } 
}
公共类ProductController:ApicController{
公共IQueryable Get(){
var dbContext=new dbContext();
返回dbContext.Product.AsQueryable();
} 
}
  • 如果我必须始终保持一致,那么如果必须,我如何以及在何处应用业务验证?我想退回未过期的产品
  • 我们不是违反了关注点的分离,通过直接公开数据实体来进行紧密耦合吗
    您可以按如下方式应用规则:

    return dbContext.Product.Where(p=> !p.IsExpired).AsQueryable(); 
    

    关于你的第二个问题,这取决于你。如果您需要公开您的数据,那么您应该。如果要公开数据的备用视图,可以创建ViewModel并公开该视图。

    您可以按以下方式应用规则:

    return dbContext.Product.Where(p=> !p.IsExpired).AsQueryable(); 
    

    关于你的第二个问题,这取决于你。如果您需要公开您的数据,那么您应该。如果要公开数据的备用视图,可以创建一个ViewModel并将其公开。

    @alistad hoe使用延迟执行时,您能否转换为ViewModel?Lears在表达式树中注入其他表达式…@alistad hoe使用延迟执行时,您能否转换为viewmodel?Lears在表达式树中注入其他表达式。。。