我有一個asp.net基於MVC的網站,包括三個層次:添加緩存,在數據層MVC項目(類庫)
- 表示層(MVC網站)
- 領域層(類庫)
- 數據層(類庫)
和這裏是我的代碼
PR esentation層:
public ActionResult MyAction(int categoryId = 1)
{
var products = service.GetProductsByCategory(categoryId);
return View(products);
}
領域層:
public List<MyProduct> GetProductsByCategory(int categoryId)
{
/* some code here */
return myProductDao.GetProductsByCategory(categoryId);
}
數據層:
public List<MyProduct> GetProductsByCategory(int categoryId)
{
/* check if data available in cache to avoid pulling database */
using (var context = new myDbEntities())
{
var myproducts = context.ProductEntities.Where(p => p.CategoryId == categoryId);
return Mapper.Map<List<ProductEntity>, List<Product>>(products);
}
}
我們每天假設產品表的改變只有一次,我想添加緩存層以避免在特定時間拉取數據庫。
問題: 我通常使用HttpContext.Cache.Insert()的控制器高速緩存,但現在我打算緩存添加到數據層,它是一個類庫,沒有HttpContext的。通常在數據層中緩存如何完成
如果需要,您可以在數據層中添加對具有HttpContext的程序集的引用。但恕我直言,我個人不會將緩存添加到數據層。我會保持數據層,因此它總是從數據庫中提取數據。我將保持控制器和數據訪問層之間的緩存層(可能是業務層) – Shyju
@Shyju劑量添加一個對具有HttpContext的程序集的引用,正確的方法是做什麼? –
呵呵,人不要添加引用,只需創建一個接口並將其作爲依賴關係傳遞給它。發佈答案。 –