我在网页开发上遇到EF6问题。在索引页面中,我需要执行一个查询来显示一些信息,问题是第一个查询在内存上创建模型,并花费10秒来完成它(不在很好的托管中)。 人们如何处理这个问题?用直接查询获取第一个数据?读一个txt文件?实体框架6生成模型性能
0
A
回答
0
默认情况下,EF具有快照更改跟踪机制。
它每次从数据库加载时都会保存实体状态。例如,当调用SaveChanges方法时,实体框架会检查当前上下文中的所有实体,并将它们与保存的状态进行比较。
这可能是一个触摸有时慢......在上下文构造函数夹头这:
this.Configuration.AutoDetectChangesEnabled = false;
这将关闭其应该在这里带走了一下开销的实体跟踪。但是,如果它是相当静态的数据,也许你可以在应用程序启动时使用缓存来保存数据,那么你只需要将它从内存中提取出来,并使它每x小时/分钟刷新一次。
而且,顺便说一句,移至AZURE如果可以的话,它不会花费更多的我希望,将是一个更容易一起工作的部署等
0
有两件事情我会做: 1)分析你的查询,看看它是否真的需要10秒。查看LINQPad,Glimpse或Stackify前缀,了解如何查看从EF生成的SQL查询。效率低下的查询可能是您的问题。在数据库中使用视图或设置索引可能会解决问题。
2)如果要运行此查询一次,然后对后续请求使用内存中副本,请使用MemoryCache。第一个请求的性能仍然会受到影响,但只要缓存设置为最后,所有后续请求的速度都会非常快。使用此命令时会产生内存冲击,因为您将结果长期保存在内存中。如果每个访问者在索引页上都有一个动态请求,则会使用大量内存。如果所有用户的请求都是相同的,那么这将是一个不错的选择。
相关问题
- 1. 实体框架4模型生成
- 2. ADO.NET实体框架模型性能
- 3. 实体框架6查询生成NullReferenceException
- 4. 实体框架6和异步()性能
- 5. 实体框架需要30分钟才能生成模型
- 6. 实体框架 - 生成模型时指定模板
- 7. 实体框架 - 生成类
- 8. 实体框架6未映射属性
- 9. 实体框架 - 从模型
- 10. ASP.Net实体框架模型
- 11. 性能的实体框架
- 12. 实体框架性能
- 13. 实体框架6.模式名称
- 14. 实体框架6:忽略所有派生类型的基类型的属性
- 15. 使用MySQL的实体框架 - 超时生成模型
- 16. 更改实体框架生成的模型类
- 17. 从实体框架模型生成SQLite数据库的
- 18. 实体框架4 + SQL Server CE +从模型生成数据库
- 19. ADO.Net实体框架从XSD文件生成模型
- 20. 实体框架6 AutoDetectChangesEnabled
- 21. 像在实体框架6
- 22. 实体框架6:DbUpdateConcurrencyException
- 23. 使用实体框架6
- 24. 从数据库生成实体框架模型,无需导航属性
- 25. 实体框架6迁移 - 生成“SchemaName”。“TableName”
- 26. 实体框架6:如何重写SQL生成器?
- 27. 实体框架6月CTP 2011和实体框架4.2之间的相关性?
- 28. 如何扩展实体框架6模型
- 29. 实体框架违反主键约束6,模型一对多
- 30. 实体框架6 - 的GroupBy对导航性能
您可以预先生成EF视图:https://msdn.microsoft.com/en-us/data/dn469601.aspx – Riv
请提供您的查询的代码。 –
@Riv我会尝试预先生成的意见..我之前看到这个选项,但它是一个简单的模型与10个实体和几个关系,它应该默认工作... – Maxi