1

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

片段

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

1 回答 1

1

您可以应用以下规则:

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

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

于 2012-04-23T16:07:20.563 回答