我在MVC应用程序中阅读了大量有关页面缓存和部分页面缓存的信息.但是,我想知道如何缓存数据.
在我的场景中,我将使用LINQ to Entities(实体框架).在第一次调用GetNames(或任何方法)时,我想从数据库中获取数据.我想将结果保存在缓存中,并在第二次调用时使用缓存版本(如果存在).
任何人都可以展示一个如何工作的例子,应该在哪里实现(模型?)以及它是否可行.
我已经在传统的ASP.NET应用程序中看到了这一点,通常用于非常静态的数据.
我的项目中的哪个类应该负责跟踪已经创建了哪些聚合根,以便不为同一个实体创建两个实例.我的存储库应该保留它创建的所有聚合的列表吗?如果是,我该怎么做?我是否使用单一的存储库(听起来不对我)?另一种选择是封装这个"缓存"在其他地方是其他类吗?这个类看起来会是什么样的,它适合什么样的模式?
我没有使用O/R映射器,所以如果有一种处理它的技术,我需要知道它是如何做到的(如它使用的模式)能够使用它
谢谢!
c# domain-driven-design aggregate repository ddd-repositories
我正在尝试为我的网站创建一个菜单.它需要满足以下要求
目前,我有一个简单的示例运行,但我不知道如何集成缓存.我想我可能需要在整个工作方式上进行修改.这里是:
我有一个ProductMenuAttribute,它从数据库中提取数据,并将其存储在ViewData中:
public class ProductMenuAttribute: FilterAttribute, IActionFilter
{
#region IActionFilter Members
public void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext != null)
{
var context = filterContext.Result as ViewResult;
if (context != null)
{
ProductsRepository repository = new ProductsRepository(Properties.Settings.Default.SqlConnectionString);
context.ViewData.Add("ProductsList", repository.GetAllProductRanges());
}
}
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
在我的Site.master中,我从ViewData中提取数据并使用它来呈现我的菜单.这是我的无序菜单列表中的一个小片段,它使用CSS进行样式设置.这是代码:
<li>
<%= Html.ActionLink("Products", "Index", "Products")%>
<% IQueryable<ProductRange> productRanges = ViewData["ProductsList"] as IQueryable<ProductRange>; %>
<% if (productRanges != null) …
Run Code Online (Sandbox Code Playgroud)