gpt4 book ai didi

entity-framework - EF4 - 数据未刷新/更新

转载 作者:行者123 更新时间:2023-12-04 08:28:57 24 4
gpt4 key购买 nike

我有一个使用 EF4 POCO/存储库的 MVC3 应用程序。每当用户在网站上打开一个项目时,它就会在数据库中被标记。有一个后端服务会不断检查是否有任何项目被标记了更多 'x' 秒并取消标记它们。我遇到的问题是在我的后端服务中,我运行的查询似乎找到了标记的项目,但是当我检查单个项目是否被标记时,实体没有刷新。

这是我查找标记项目的代码

 var list = Context.Transactions
.Where(t => t.Locked).ToList() ;

list.Count() 返回正确的数字。但是当我开始遍历列表时,我发现 t.Locked = false

当我运行 SQL 探查器时,我可以看到我上面的代码数据是从数据库中正确检索到的。这是缓存还是身份映射问题,我没有正确使用 EF。

最佳答案

仔细阅读this answer .之后,我建议您重构您的应用程序,为每个请求(在 Web 的情况下)使用新的上下文,并为后端服务中的每个时间事件使用新的上下文。

EF 使用身份映射模式。一旦实体被上下文加载,默认情况下,尽管从新查询返回数据,您将始终获得具有相同值的相同实例。有一些方法可以强制 EF 刷新实体,但主要是为了解决一些并发问题。

如果您仍然没有改变您的应用程序,请使用它来强制刷新值:

var query = (ObjectQuery)(yourLinqQuery);
query.MergeOption = MergeOption.OverwriteChanges;
// Now iterate / execute query

关于entity-framework - EF4 - 数据未刷新/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com