LINQ数据库视图不需要的缓存问题
本文关键字:缓存 问题 不需要 数据库 视图 LINQ | 更新日期: 2023-09-27 18:29:26
我正在使用Devexpress Gridview,我遇到了缓存问题。
我开发了一个页面,如下所示:http://mvc.devexpress.com/GridView/SimpleCustomBinding
它按预期工作。但是,如果我更新数据库(Mssql)中的列值,Gridview不会更改该值。
搜索了web,发现EnableRowsCache一定是false,但我无法实现它,因为我认为此属性可用于不同类型(或版本)的Gridview,并且我们一直在使用MVC扩展。
有人知道如何禁用缓存并使其显示"新鲜"数据吗?
------更新------
经过大量的挖掘和搜索,现在很明显,缓存不是由于devexpress,而是linq到sql的结果。linq的一个属性是缓存视图的结果,而不显示更新后的值。
这个问题对我们来说是一个重大的打击,现在我和我的同事得出了一个结论。
问题
首先,假设您的数据库中有一个视图,名称:ViewBook
ViewBook
Id | Title | Author
然后您编写以下查询:
(from VB in Connection.ViewBook
select VB).ToList();
结果,您将得到一个行列表。
然后,如果更新数据库中的一行,此查询将不会显示新数据,仍然返回旧数据。
解决方案
为了解决这个问题,首先定义一个对象:
public class ViewBookObject : ViewBook
{
//this object will have all the properties of ViewBook.
}
那么在查询中:
(from VB in Connection.ViewBook
select new ViewBookObject {
Id = VB.Id,
Title = VB.Title,
Author = VB.Author
}).ToList();
此查询将始终显示新数据。
结论
我在这里为有类似问题的人写了这个解决方案。
我希望这对每个人都有帮助。