关于EF core数据读取的效率和缓存问题

来源:3-4 【理解】什么是Entity Framework

慕设计9348276

2021-01-03

请问老师,EF生成的sql语句都是比较冗余,如何保证数据读取的效率?EF的缓存是否属于应用程序缓存? 是在内存上的吗? 如果需要自己用HttpRuntime.Cache,那应该在哪个地方加? 是不是在仓库类读取数据的时候先读Cache呢? 谢谢老师!

写回答

1回答

阿莱克斯刘

2021-01-03

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

0
5
慕设计9348276
非常感谢!
2021-01-04
共5条回复

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

979 学习 · 553 问题

查看课程