在Application_Start中我缓存了一些通过LINQ to SQL获得的对象。
objDataContext objBetting = new objDataContext();
var testObjects= from element in objBetting.Elements
select new { element.attribute };
HttpRuntime.Cache["test"] = testObjects;
在某些页面上,我想读取值testObject.attribute。我只能:
var objS = (IQueryable)Cache["test"];
我缓存匿名类型的对象,如何获取属性,也许这是更好的问题。
好的,我将制作并填充System.Data.Linq.Table类型的对象,我会将其缓存,以便能够进行转换。
答案 0 :(得分:2)
不要缓存可查询对象。它们被懒惰地评估,并且很可能(1)当您读取缓存时上下文不存在,因此枚举它将会死亡,并且(2)它不可序列化,因此它将无法工作使用分布式缓存。
如果必须缓存某些内容列表,请将其放入基本类型数组中。
答案 1 :(得分:1)
HttpRuntime.Cache["test"] = testObject.ToList();
IList<string> attributes = (IList<string>)Cache["test"];