我有一个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的程序集的引用,正确的方法是做什么? –
呵呵,人不要添加引用,只需创建一个接口并将其作为依赖关系传递给它。发布答案。 –