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

时间:2012-04-23 15:50:54

标签: odata asp.net-mvc-4 asp.net-web-api

我的api方法是否总是与底层数据源(ORM的datacontext)绑定,以公开支持oData的Queryable功能,并具有延迟执行的好处?

片段

public class ProductController : ApiController { 
    public IQueryable<Product> Get() { 
        var dbContext = new DBContext(); 
        return dbContext.Product.AsQueryable(); 
    } 
}
  1. 如果我必须时不时地联系,我必须如何以及在哪里应用业务验证?例如:我想要退回未过期的产品。
  2. 我们是否通过直接暴露数据实体来违反关注点并进行紧密耦合?

1 个答案:

答案 0 :(得分:1)

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

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

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