0

我正在使用 Devexpress Gridview,但遇到了缓存问题。

我在这里开发了一个页面:http: //mvc.devexpress.com/GridView/SimpleCustomBinding

它正在按预期工作。但是,如果我更新数据库 (Mssql) 中的列值,Gridview 不会更改该值。

在网上搜索并发现 EnableRowsCache 必须为 false 但我无法实现它,因为我认为此属性可用于不同类型(或版本)的 Gridview 并且我们一直在使用 MVC 扩展。

有人知道如何禁用缓存并使其显示“新鲜”数据吗?

- - - 更新 - - -

经过大量的挖掘和搜索,现在很清楚缓存不是由于devexpress,而是linq to sql的结果。它是 linq 的一个属性,它缓存视图的结果并且不显示更新的值。

4

1 回答 1

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();

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

结论

我已经为与这种情况有类似问题的人写了这个解决方案。

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

于 2014-01-25T11:30:16.820 回答