c# – 实体框架的性能问题
手头的技术:
> C#.NET 4.0 问题: 使用SQL事件探查器,我可以看到插入的持续时间(大约)为0毫秒.这是预期的. 使用ANTS Profiler我可以看到DataContext.SaveChanges()占用(大约)1,500ms.深入研究,99.9%的时间用在SNINativeMethodWrapper.SNIReadSyncOverAsync中. 使用谷歌,很少有用的结果(没有,因此这个问题).很长一段时间以来,我第一次发现自己正在研究Google结果的第2页及其后(未知的水域!). 关于SO的一些问题引用了这种方法,但是来自不同的背景: > snireadsyncoverasync-performance-issue 我正在寻找一个不需要任何解决方案的解决方案: >将EF升级到V6(或任何其他版本) 我应该补充一点,我已经禁用了以下EF设置.这总体上具有积极影响(如预期的那样),但对问题域没有影响. > Context.Configuration.ValidateOnSaveEnabled = false; 问题: 解决方法
正如评论中所建议的那样:
实际上,对于dbcontext中的这几个条目(怀疑不是环境DbContext),我认为手头的问题实际上并不是对数据库的插入/显示更改,而是实际上数据库调用本身(如创建连接,验证) )这是性能损失的主要问题.我实际上可以想象连接池会提高性能. 对于这些感兴趣的:对于每个“实际”Db调用(即,不是查询准备,但实际上是将数据提取/写入数据库),如果给出连接字符串/数据库名称,EF将首先建立连接,或者使用连接在DbContext(Connection,bool contextOwnsConnection = true)中给出了上下文构造函数的重载.每次实际调用数据库的查询都会发生这种情况.对于某些数据库,这种连接的建立可能需要相当多的时间,而循环通过上下文实体并根据状态发出DELETE / UPDATE / INSERT调用应该采取(至少对于这些少数条目)没有那么多时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |