Lar*_*ard 4 sql caching entity-framework entity-framework-5
我有一个奇怪的问题,我以前没有经历过.我使用Entity Framework来检索我的记录.
我有以下电话:
var dbOrganisation = repository.DbOrganisation.FirstOrDefault(c => c.Id == id);
Run Code Online (Sandbox Code Playgroud)
我希望没有缓存这个电话.因此,当我进行此调用时,我希望它可以查询数据库并检索最新的DbOrganisation对象.但事实并非如此.
我在彼此之后相对较短的时间(约5-10秒)将这种方法称为相对两次.但在此期间,此表中的十进制值可由某些第三方更改.
但是,即使值更改,FirstOrDefault调用也会检索未更新的版本.
示例情况:
FirstOrDefault打电话,看到字段的十进制值Credits是50Credits为45FirstOrDefault拨打电话10秒钟,但是DbOrganisation仍然有50个积分我究竟做错了什么?我以为FirstOrDefault默认情况下没有缓存调用?
你做的一切都是正确的,这就是EF的工作方式.
您可以.AsNoTracking()为您使用:
var dbOrganisation = repository.DbOrganisation.AsNoTracking().FirstOrDefault(c => c.Id == id);
Run Code Online (Sandbox Code Playgroud)
DbExtensions.AsNoTracking方法:返回一个新查询,其中返回的实体不会缓存在DbContext或ObjectContext中.
| 归档时间: |
|
| 查看次数: |
2781 次 |
| 最近记录: |