将OutputCache应用于存储库模型类是不好的做法

时间:2013-07-16 10:29:41

标签: asp.net-mvc

我读过的所有示例都将OutputCache应用于Controller操作方法。但现在我有一个存储库方法,它检索Active目录用户。所以我想缓存这个模型类,如:

[OutputCache(CacheProfile = "long", Location = OutputCacheLocation.Server, VaryByParam = "term")]
public List<DomainContext> GetADUsers(string term)
{
    List<DomainContext> results = new List<DomainContext>();
    using (var context = new PrincipalContext(ContextType.Domain, "WIN-SPDEV"))
    using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
    {
        var searchResults = searcher.FindAll(); 

为了实现这一点,我必须在我的存储库模型类中包含以下内容: -

using System.Web.Mvc;
using System.Web.UI;

所以添加缓存设置&amp;是错误的或者是不好的做法。包括`System.web.mvc + system.Web.UI,insdie一个存储库模型类?

1 个答案:

答案 0 :(得分:4)

  

所以添加缓存设置&amp;是错误的或者是不好的做法。   包括`System.web.mvc + system.Web.UI,insdie一个存储库模型   类?

不仅是不好的做法,而且它根本不起作用,因为OutputCache属性只对整个输出被缓存的控制器动作产生影响。您可以使用MemoryCache来缓存方法的结果。所以在这里你可以先查看缓存是否存在一个用户列表,如果它不查询AD并将结果缓存回来。