如题,在对同一个Context连续进行相同条件的查询时,会触发EFCore的缓存机制,如果这个过程中数据发生了变化,则会出现错误。

例如:有两个Context实例,一个负责查询,一个负责增删改, A_Context查询了数据A,而B_Context之后修改了数据A,当A_Context再次以相同条件查询数据A时,由于缓存的影响,将继续查询到未修改的结果。

因此,可以通过清除指定数据的缓存的方法解决(也可以全局禁用缓存、或禁用某个实体的缓存), 常见的是AsNoTracking()方法, 但由于使用的是Dynamic.Linq的写法,因此无法直接使用。

 public static dynamic GetDataByPrimaryValue(string ModelType, string PrimaryValue)
{
Type modelType = PublicHelper.CreateInstanceByClassName(ModelType).GetType();
var context = DBContextHelper.GetContextByModelType(modelType); var result = context
.Query(modelType)
.Where($"{ DBContextHelper.GetModelPrimaryKey(modelType)}==@0", PrimaryValue)
.SingleOrDefault();
context.Entry(result).State = EntityState.Detached;//从缓存中去掉数据
return result;
}

也就是要在查询结束后,从缓存中去掉这次查询的数据即可。

最新文章

  1. Linux 设备驱动程序 proc seq
  2. Linux gcc的安装
  3. CentOS 多网卡绑定bonding
  4. INV(库存管理)
  5. 找个输入IPoint在某个FeatureClass上距离最近的要素
  6. bzoj 3784: 树上的路径 堆维护第k大
  7. Linux下一些基本操作
  8. 「OC」内存管理
  9. [转载+实践理解]Android动画---如何正确使用平移动画(关于fillBefore和fillAfter的一点说明)(转载)
  10. HBase数据库增删改查常用命令操作
  11. k-近邻算法概述
  12. missing 1 required positional argument: 'on_delete'报错解决方案
  13. Oracle数据库学习(一)安装和简单使用
  14. python format格式化字符串
  15. centos实现两种秒级任务的简单方法
  16. [python]文件操作read&readline&readlines
  17. linux系统下安装nginx
  18. plot绘图
  19. ElasticStack系列之八 & _source 字段
  20. word 使用中 上标符号的实现

热门文章

  1. 常用的vi的命令模式下的快捷命令
  2. Java 前加加和后加加 总结
  3. 5、Maven-构建配置文件
  4. Java进阶学习(1)之类与对象(下)
  5. JAVA基础学习(7)之函数
  6. tkinter学习(4)frame、pack、canvas学习
  7. Laravel Vuejs 实战:开发知乎 (8)美化编辑器
  8. min-25筛总结
  9. 【嵌入式】ARM9复习
  10. 《JavaScript高级程序设计》读书笔记(三)基本概念第五小节流程控制语句