停止Linq缓存表

3
当我在数据库中创建一个新实体,然后从数据上下文请求表格时,新实体不会出现。 LINQ是否缓存了表格并返回缓存版本?如果是,我该如何阻止LINQ这样做。
DALConnector.Dc.Order.InsertOnSubmit(NewOrder);
DALConnector.Dc.SubmitChanges();

现在我点击一个按钮,它显示一个表单,其中包含一个绑定到DALConnector.Dc.Order的GridView,但它不显示新订单。
2个回答

2

您是如何重新绑定网格的?它不会缓存结果,所以我不确定为什么会出现问题。您必须重新查询上下文以获取新记录...或者,如果您正在重新绑定对象的记录(例如绑定客户),则可以通过确保订单添加到客户对象的订单集合中而不必重新查询来实现。

因此,如果您是以这种方式进行绑定:

grid.DataSource = customer.Orders;

只有在执行以下操作后,您才能获得新订单:

customer.Orders.Add(newOrder);
dc.Orders.InsertOnSubmit(newOrder);
dc.SubmitChanges();

然后,您可以直接绑定客户的订单。


0

Linq2Sql的DataContext并不会缓存完整的表,它只有一个检索到的实体的缓存,用于跟踪更改。如果您在插入订单后使用新的DataContext进行查询,您的结果可能是相同的。

由于您正在使用只能与SQL Server一起使用的Linq2Sql,我建议启动SQL Server Profiler并检查是否首先提交了真正的插入语句到数据库。

检查您的dbml,您是使用运行时插入还是存储过程来处理Order

还要检查一下,您是否没有忽略DataContext可能在SubmitChanges()上引发的任何异常。

如果这些都没有帮助,请添加您的查询代码,以便我们也可以验证它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接