使用实体框架刷新数据

问题描述

| 我正在尝试使用Entity Framework查询数据库,并且我使用了以下代码来获取一些数据。
var students= MyEntities.Students.Where(s => s.Age > 20).ToList();
该代码可以正常工作并返回正确的数据。但是,如果我运行此代码,则转到数据库并更新记录以更改此代码应返回的数据,然后在不关闭应用程序的情况下重新运行此代码,这是原始数据。 我很确定它曾经可以正常工作,但是现在这不能刷新数据。     

解决方法

不,它从来没有奏效。这是称为身份映射(在此说明)的实体框架(和许多ORM工具)的基本行为。 如果在同一上下文中运行查询,则不会更新您的实体。它只会在运行这两个查询之间追加在数据库中创建的新实体。如果要强制EF重新加载实体,则必须执行以下操作:
ObjectQuery query = MyEntities.Students;
query.MergeOption = MergeOption.OverwriteChanges;
var students = query.Where(s => s.Age > 20).ToList();
    ,由于EF缓存数据,您遇到了问题,因此,如果数据在后台发生更改,并且您不处置/重新打开上下文,则会遇到问题。 一般的经验法则是使上下文的生存期尽可能短,以规避您刚才提到的问题。 请不要忽略我上面所说的,但是如果您想从数据库中强制刷新,则可以使用Refresh()方法。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...