如何在不以编程方式添加MemoryCache实例的元素的情况下设置过期时间?

时间:2016-03-09 08:12:17

标签: c# asp.net-mvc memorycache

我有一个实例MemoryCache类。 我需要为缓存中的所有对象设置过期时间。 有人可以帮忙吗?

private static List<UserRole> _userRoles
{
    get
    {
        var lstUserRole = (List<UserRole>)MemoryCache.Default.Get("UserRoles");

        if (lstUserRole == null)
        {
            var _svcFactory = DependencyResolver.Current.GetService<QueryFactory>();

            lstUserRole = _svcFactory.GetQuery<UserRole>().
                Include(x => x.Role.Rights).
                Where(x => x.UserId == _userId && !x.DeletedOn.HasValue && !x.Role.DeletedOn.HasValue).ToList();

            foreach(var userRole in lstUserRole)
            {
                userRole.Role.Rights = userRole.Role.Rights.Where(x => !x.DeletedOn.HasValue).ToList();
            }

            MemoryCache.Default.Add("UserRoles", lstUserRole, DateTime.Now.AddMinutes(RolesCacheMinutes));
        }

        return lstUserRole;
    }
}

0 个答案:

没有答案