SQL视图数据未正确更新

时间:2009-05-15 13:18:08

标签: sql-server linq-to-sql

我有两个表(Knicks和Knacks)和一个连接两个表(PaddyWhacks)的视图。表格包含以下字段:

Knicks.key, Knicks.data1

Knacks.fkey, Knacks.data2

所以视图包含:

PaddyWhacks.key, PaddyWhacks.data1, PaddyWhacks.data2

我正在使用LINQ to SQL将完整视图检索为IQueryable,一切看起来都不错。在此之后,我从尼克斯手中抢到一排并更新它:

Knick k = db.Knicks.Single(row => row.data1 == 5);
k.data1 = 6;
db.SubmitChanges();

我知道更新是正确的,因为如果我在Knick上执行Count(),其中data1 == 5,结果已经改变(我可以在数据库中查看并查看更改)。但是,如果我再次使用以下方法检索Paddywhacks:

IQueryable<PaddyWhack> rows = from row in db.PaddyWhacks select row;

相应的data1值仍为5.

应用程序在托管的Web服务器上运行,如果我等待足够长的时间并再次尝试,我将在IQueryable视图中看到更新的值。我猜测某些内容正在被缓存,也许LINQ不会一直回到数据库来重新获取数据。是否需要注意LINQ或SQL Server功能才能解决问题?

2 个答案:

答案 0 :(得分:1)

我不使用linqtosql,但你知道某些东西在缓存中是正确的。视图只是一个“宏”查询,数据是来自原始表的数据,因此它始终是最新的。我会尝试使用与IQueryable()不同的函数或创建新连接,然后运行查询。

答案 1 :(得分:1)

您可以尝试刷新DataContext,如下所示:

dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, rows);