LINQ 到 SQL 语句的相似性

本文关键字:相似性 语句 SQL LINQ | 更新日期: 2023-09-27 18:30:28

我在VS2015中从C#中发现了Linq to SQL的一个有趣的行为。

我有一个

我阅读的SQL表,我正在一个win表单上显示内容。 然后,我使用以下方法更新行的说明:

dc.SubmitChanges();

如果我在SQL Server Management Studio中查看,该值已更新。

而现在,这两个陈述给了我不同的结果。 有什么原因吗?

var x1 = dc.MyTable.Where(p => p.ID == 2).First().Description;
var x2 = dc.MyTable.Where(p => p.ID == 2).Select(x => x.Description).First();
x1 包含

不正确的旧值,而 x2 包含正确的新值。

如果我关闭表单并重新打开它,则 x1 和 x2 都包含正确的值。 就好像值以某种方式缓存一样。

LINQ 到 SQL 语句的相似性

从 LINQ 到 SQL 的 DataContext 缓存所有对象,但只缓存整个实体。因此,第一个查询从缓存返回对象,但第二个查询与缓存没有任何共同之处,因为它不查询整个实体。第二个查询直接针对数据库调用。

您可以在上下文上使用"刷新"方法刷新缓存中的对象,也可以只创建新的上下文对象。