我一直在使用以下缓存类
我的代码中有以下内容,首先是sql语句
SELECT Id, AmbitiousDescription from [User].[Ambitious_Description]
接下来是我将其读入列表时的部分
var ambition = sqlCon.Read().ToList();
然后我将它保存到缓存中,这样可以节省我多次访问数据库的时间。
Cache.CacheExtension.SaveTocache("ambition", ambition, new DateTime(1));
在这个方法的顶部,我检查它是否在缓存中,如下所示
if (Cache.CacheExtension.IsIncache("ambition"))
{
var listAmbition = new SelectList(Cache.CacheExtension.GetFromCache("ambition"), "1", "AmbitiousDescription");
}
else
{
// otherwise get it from the database
}
我目前在GetFromCache一词下面出现红色错误,该错误读取
我不是100%从缓存中检索它的语法,所以如果有人可以提供帮助,我会很感激。
更新
在Stephen的评论之后,我决定创建一个名为AmbitionDetails的类,如下所示:
public class AmbitionDetails
{
public int Id { get; set; }
public string Description { get; set; }
}
然后通过执行以下操作填充此内容,首先我读取结果然后使用linq填充列表ambitionDetails
// Read all the data from the query multiple
var ambition = sqlCon.Read().ToList();
var ambitionDetails = ambition.Select(item => new AmbitionDetails
{
Id = item.Id,
Description = item.AmbitiousDescription
}).ToList();
然后我将其保存在缓存中,如下所示:
Cache.CacheExtension.SaveTocache("ambition", ambitionDetails, new DateTime(1));
然后我尝试从缓存中检索它,如下所示:
var listAmbition = new SelectList(Cache.CacheExtension.GetFromCache<List<AmbitionDetails>>("ambition"));
model.ListAmbitious = new List<SelectListItem>();
model.ListAmbitious.AddRange(
listAmbition.Select(
item => new SelectListItem { Text = item.Text, Value = item.Value.ToString() }));
但是我在item =&gt;上得到一个null异常错误新的SelectListItem,但是当我在
上放置一个断点时 var listAmbition;
并展开它以查看文本
的结果"ApplicationName.Shared.Models.AmbitionDetails"
值为null
我不确定这里出了什么问题?