【EntityFramework】分页查询无主键视图数据重复异常
问题
在做统计的查询视图之后,发现EF查询的结果第一条覆盖了第二条,两条数据只有一个时间字段不一样
原因分析
EF默认有缓存,视图没有建立主键,EF的缓存机制认为这两条除了时间不同的数据一致,就没有再从数据库取,然后出现SQL Server Profiler
里面的SQL正常,但是拿到的数据死活都不对。
解决方法
对视图使用.AsNoTracking()
,取消EF对这个视图的缓存(然后可以使用Entity Framework Plus
调用MemoryCache
或Redis
来做缓存)1
2var l = from s in statView.AsNoTracking()
select s;