我正在使用Devexpress Gridview,我遇到了缓存问题。
我开发了一个类似于此处的页面:http://mvc.devexpress.com/GridView/SimpleCustomBinding
它按照预期的方式工作。但是,如果我更新数据库(Mssql)中的列值,Gridview不会更改该值。
搜索网页,发现EnableRowsCache必须为false,但我无法实现它,因为我认为此属性可用于Gridview的不同类型(或版本),我们一直在使用MVC扩展。
有人知道如何禁用缓存并让它显示“新鲜”数据吗?
------更新------
经过大量的挖掘和搜索,现在很清楚,缓存不是由于devexpress,而是linq to sql的结果。 linq的一个属性是它缓存视图的结果并且不显示更新的值。
答案 0 :(得分:0)
这个问题对我们来说是个主要的头痛,现在我和我的同事得出了结论。
<强>问题强>
首先,假设您的数据库中有一个视图,名称为: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();
此查询将始终显示新数据。
<强>结论强>
我已经把这个解决方案写给了那些对这种情况有类似问题的人。
我希望这对每个人都有帮助。