在Application_Start中,我缓存了一些通过LINQ到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类型的对象,并将其缓存为能够转换。
不要缓存可查询对象。它们是延迟计算的,并且很有可能 (1) 当您读取缓存时上下文不存在,因此枚举它将死亡,以及 (2) 它不可序列化,因此它不适用于分布式缓存。
如果必须缓存某些内容的列表,请将其放入基元类型的数组中。
HttpRuntime.Cache["test"] = testObject.ToList();
IList<string> attributes = (IList<string>)Cache["test"];