2012-04-23 175 views
1

我的api方法是否应始终与基础数据源(ORM的datacontext)绑定,以显示支持oData的可查询功能,并受益于延期执行ASP .NET Web API可延迟执行的可查询功能

片段

public class ProductController : ApiController { 
    public IQueryable<Product> Get() { 
     var dbContext = new DBContext(); 
     return dbContext.Product.AsQueryable(); 
    } 
} 
  1. 如果我有扳平总是那么,如何以及在哪里我可以申请业务验证,如果我有什么打算?例如:我想返回未过期的产品。
  2. 我们是不是在违反关注点分离的问题,并直接暴露数据实体来进行紧密耦合?

回答

1

你可以有如下应用的规则:

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

关于你提到的第二个问题,它是由你。如果你需要公开你的数据,那么你应该。如果您想要公开替代视图的数据,您可以创建一个ViewModel并公开这一点。

+0

@alistad hoe你可以在转换为视图模型时使用被动执行吗? Lears在表达式树中注入额外的表达式... – 2012-06-11 23:06:29