可以将linq表添加到asp .net缓存中吗?

时间:2010-01-15 01:54:36

标签: asp.net linq caching

如果有,那么在vb .net中有一个例子吗?我想将一个linq结果添加到缓存中,然后允许mvc帖子搜索缓存以获得更好的性能......我实现它的每一种方式我收到一个没有引用错误的对象......

我很困惑,也许我不应该这样做,但mvc帖子将检查最多2000条记录,最好不要每次都查询数据库。

感谢您的帮助......

4 个答案:

答案 0 :(得分:3)

存储LINQ 查询可能不是很有用,可能无效。

但是,相对安全的做法是在ASP.NET缓存中存储LINQ查询的结果

“结果”我的意思是你接受查询对象并在其上调用ToList(),这将导致查询被执行。

就您收到的任何错误而言,请向我们展示一些代码示例以及确切的错误和堆栈跟踪,我们可以尝试为您找到合适的解决方案。

答案 1 :(得分:2)

呀。使用Cache.Insert。我不知道VB.NET,但是here's some basic advice(参见“缓存API,使用缓存对象”)。只需将您的Linq结果传递给Insert即可。我要小心不要用匿名类型来修改你的Linq结果,这样就无法在从缓存中检索对象时正确地转换对象。

答案 2 :(得分:1)

首先,不要将查询本身插入Cache(“from”语句)。请改为插入查询结果。

接下来,请记住,仅仅因为您将对象插入到缓存中,它并不能保证在您下次尝试访问它时它会存在。事实上,使用默认优先级,Cache对象具有相当积极的放弃对象的策略。

您可以尝试将优先级提高到高,看看是否有帮助。

答案 3 :(得分:0)

我不确定为什么;可能是因为我使用的是.Net 4.0,但是我永远无法让Cache工作......继续使对象没有引用错误。

无论如何,我在MVC教程中找到了一篇名为“Improving Performance with Output Caching”的文章。在tut中有几个我使用OutputCache的例子(Duration:= Integer.MaxValue,VaryByParam:=“none”)......

不确定它是否有帮助但是在Firebug中我看到响应以50ms而不是100ms回复。现在唯一的问题是拆分文件,因为在大约500条记录之后,浏览器就会崩溃......

感谢大家的帮助!