【问题标题】:ASP .NET Web API Queryable capabilities with deferred execution具有延迟执行的 ASP .NET Web API 可查询功能
【发布时间】:2012-05-04 06:17:22
【问题描述】:

我的 api 方法是否应该始终绑定到底层数据源(ORM 的数据上下文)以公开支持 oData 的 Queryable 功能并受益于延迟执行

片段

public class ProductController : ApiController { 
    public IQueryable<Product> Get() { 
        var dbContext = new DBContext(); 
        return dbContext.Product.AsQueryable(); 
    } 
}
  1. 如果我必须绑定始终,如果必须,我可以如何以及在哪里应用业务验证?例如:我想退回未过期的产品。
  2. 我们直接暴露数据实体不是违反关注点分离和紧密耦合吗?

【问题讨论】:

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


    【解决方案1】:

    您可以应用如下规则:

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

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

    【讨论】:

    • @alistad hoe 可以在使用延迟执行时转换为视图模型吗?李尔斯在表达式树中注入了额外的表达式...
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多