【发布时间】:2009-10-09 19:49:35
【问题描述】:
我有一个包含用户和管理部分的应用程序。如果管理员在 sql 数据源的帮助下更新数据,那么它就更新了数据库。但是,当我们使用 linq 查询检索数据时,它会显示其旧值而不是更新后的值。
一段时间后,linq 查询会自动显示正确的值。
我认为它缓存了价值,但我发现自己很无奈。请帮我解决这个问题。
【问题讨论】:
我有一个包含用户和管理部分的应用程序。如果管理员在 sql 数据源的帮助下更新数据,那么它就更新了数据库。但是,当我们使用 linq 查询检索数据时,它会显示其旧值而不是更新后的值。
一段时间后,linq 查询会自动显示正确的值。
我认为它缓存了价值,但我发现自己很无奈。请帮我解决这个问题。
【问题讨论】:
当你说
当我们使用 linq 查询检索数据时
您的意思是再次调用您的选择方法还是使用当前内存对象?
在任何一种情况下,您都可以随时刷新实体:
Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, entity)
【讨论】:
确保您有效地使用您的DataContext(理想情况下每个工作单元使用一个)。
每次更新后,请务必致电 DataContext.SubmitChanges(); 将更改提交回数据库。
另外请注意,您在将更改添加到另一个上下文和调用 SubmitChanges() 之间实例化的任何上下文都不会反映这些更改。
【讨论】: