LINQ数据库视图不需要的缓存问题



我正在使用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();

此查询将始终显示新数据。

结论

我在这里为有类似问题的人写了这个解决方案。

我希望这对每个人都有帮助。

最新更新