EF目前是6.1.3。针对code first以及SQL脚本优化做了非常多的工作。举个简单的例子。现在估计还有大部分.NET程序员在使用数据脚本分页的时候还在用着古老的top分页吧?好一点的知道row_number。但是EF会根据你连接SQL版本(仅讨论SQLserver)进行不同版本的分页支持。例如sql2012以上的版本。EF会自动采用FETCH NEXT进行分页,fn和top的性能对比,这个就不说了。
再举个例子。之前给公司某同事擦屁股,有一个多表多关联复杂查询并且内部要实现一些函数 *** 作。采用linq to ef编写的。测试反馈说查询速度巨慢。我打开sql profile看了一下。此君接近90行的linq,生成了2000行的SQL。于是我逐步重写。最后变为40行的Linq,生成60行的脚本,打开速度立马飞跃到毫秒级。
以上是说的读取性能方面的问题。下面说一下写的问题,目前EF对批量写批量UP *** 作的确支持不是很好(不要提addrange) 但是可以通过第三方EF插件实现对数据库的bulk *** 作。大量写的效率基本和在sql里进行bulk几乎差不多。
所以不是EF性能不好,而是你不会用罢了
ef是没有批量更新功能的,要么你全部取出来,更新后保存 ,要么做个存储过程。你第一步先获取表里面所有员工的数据,对整个表加1,加完之后直接更新整个表,要是里面分阶段的加1,比如前五行的员工年龄分别加二,你截断前五行加1,然后对整个的表加1,同一更新整个表,希望能帮到你。。 mvc ef 怎么修改数据库数据由于互斥,一个进程(设为A)可能因为等待进入临界区而睡眠。直到正在占有相应资源的进程(设为B)退出临界区,进程A才被唤醒。 可能存在这样的情况:A的优先级非常高,B的优先级非常低。B进入了临界区,但是却被其他优先级较高的进程(设为C)...欢迎分享,转载请注明来源:内存溢出
评论列表(0条)