首页 > 解决方案 > 我无法从 MemoryCache 中获取价值

问题描述

我无法从 MemoryCache 中获取任何数据。以下代码不起作用:

List<Product> result = GetDataWithAdoNet();

var cache = new MemoryCache("demoCaching");
var cacheItem = new CacheItem("fullName", result);
var cacheItemPolicy = new CacheItemPolicy
{
    AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(60.0)
};

var cacheAdd = cache.Add(cacheItem, cacheItemPolicy);
var result2 = cache.GetCacheItem("fullName");
Console.WriteLine(result2.Value + " " + result2.Key);

Console.ReadLine();

我正在使用 Northwind 数据库中的 GetDataWithAdoNet 方法记录(字符串 = ProductName,小数 = UnitPrice)

result2.Value似乎有 106 个数据项,但我无法访问里面的记录result2.Valueresult2.Value也不能在 foreach 循环中工作。我应该怎么办?

标签: c#

解决方案


你要投到Cacheitem.ValueList<Product>

// prepare cache

List<Product> result = new List<Product>() { new Product(), new Product() };

var cache = new MemoryCache("demoCaching");
var cacheItem = new CacheItem("fullName", result);
var cacheItemPolicy = new CacheItemPolicy
{
    AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(60.0)
};

var cacheAdd = cache.Add(cacheItem, cacheItemPolicy);

// read cache

var cacheItem2 = cache.GetCacheItem("fullName");

if (cacheItem2 != null)
{
    List<Product> result2 = (List<Product>)cacheItem2.Value;

    foreach (var product in result2)
    {

    }
}
else
{
    // Cache item not found
}

因为在我的电脑上它可以正常工作。


推荐阅读