如何缓存模型存储库结果

时间:2013-07-18 16:25:19

标签: asp.net-mvc

我有以下Repository方法,用于检索当前的Active Directory用户: -

public List<DomainContext> GetADUsers(string term=null)
{
    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();



        foreach (Principal p in searchResults)
        {
           if (term == null || p.SamAccountName.ToString().ToUpper().StartsWith(term.ToUpper()))
           {
            DomainContext dc = new DomainContext();
            dc.DisplayName = p.DisplayName;
            dc.UserPrincipalName = p.UserPrincipalName;
            dc.Name = p.Name;
            dc.SamAccountName = p.SamAccountName ;
            dc.DistinguishedName =     p.DistinguishedName;

            results.Add(dc);

        }}
    }
    return results;
}

因此AD用户不会经常更改,所以我需要将此方法的结果缓存大约2个小时。所以对此方法的任何调用都不应该调用Active Directory?我实际上是在尝试实现与Action方法中定义的[OutputCache]相同的逻辑。 此致

1 个答案:

答案 0 :(得分:1)

由于要为您编写整个解决方案有点困难,我将指向Microsoft Patterns & Practices Caching Application Block

阅读文档,您需要的实现应该非常简单。

我希望它有所帮助!

编辑:

我找到了更新的文档:http://msdn.microsoft.com/en-us/library/ff953179%28v=pandp.50%29.aspx