LINQ数据库查看不需要的缓存问题

时间:2013-08-29 15:07:40

标签: c# asp.net-mvc asp.net-mvc-3 linq

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

我开发了一个类似于此处的页面:http://mvc.devexpress.com/GridView/SimpleCustomBinding

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

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

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

------更新------

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

1 个答案:

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

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

<强>结论

我已经把这个解决方案写给了那些对这种情况有类似问题的人。

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