关于EF core数据读取的效率和缓存问题
来源:3-4 【理解】什么是Entity Framework

慕设计9348276
2021-01-03
请问老师,EF生成的sql语句都是比较冗余,如何保证数据读取的效率?EF的缓存是否属于应用程序缓存? 是在内存上的吗? 如果需要自己用HttpRuntime.Cache,那应该在哪个地方加? 是不是在仓库类读取数据的时候先读Cache呢? 谢谢老师!
写回答
1回答
-
既然是自动生成的sql语句,那我们就不要对他的性能有过高的要求,使用ef的目的主要是为了开发的便利。如果对ef的自动生成不放心,那么可以使用dapper自己写sql。1. 如何保证ef中数据读取的效率呢?还是要优化自己的代码,比如说多表联查的时候,join表的逻辑可以从仓库中提取出来放在业务逻辑里,这样可以保证每次去数据库拿数据的时候都是由业务决定join多少张表;再比如说,我们可以改变ef的track change方式来提高效率。2. EF的缓存是否属于应用程序缓存? 是在内存上的吗?ef的缓存属于应用程序缓存,应该是储存在内存上的,你可以在查询的时候加上.AsNoTracking()试试。3 .HttpRuntime.Cache应该在哪个地方加?它也属于应用程序缓存、保存在内存中,位于项目的最上层,与controller是一个级别的,应该加在这里。4. 是不是在仓库类读取数据的时候先读Cache呢?具体要看什么操作,比如说post请求就不需要读缓存了,而get请求,我们一半都要进缓存先对比一下,看看缓存数据有没有过期什么的,如果缓存过期了,那么就要去数据库里拿数据了。
052021-01-04
相似问题