2012-04-23 129 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