如何获取LINQ缓存对象的对象字段?

时间:2011-05-20 13:24:30

标签: asp.net linq

在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类型的对象,我会将其缓存,以便能够进行转换。

2 个答案:

答案 0 :(得分:2)

不要缓存可查询对象。它们被懒惰地评估,并且很可能(1)当您读取缓存时上下文不存在,因此枚举它将会死亡,并且(2)它不可序列化,因此它将无法工作使用分布式缓存。

如果必须缓存某些内容列表,请将其放入基本类型数组中。

答案 1 :(得分:1)

HttpRuntime.Cache["test"] = testObject.ToList();

IList<string> attributes = (IList<string>)Cache["test"];