EF性能优化(一)

1、EF SQL监控工具

目前采用SQLServer 自带的SQL Server Profiler来监控执行的sql,或者采用第三方插件

MiniProfiler,具体用法可以网上查一下。

2、EF使用SQlQuery 直接写sql

EF效率低于ADO.NET是因为LINQ-TO-SQL的过程消耗了时间。而使用SqlQuery则可以直接写SQL语句。

当然,如果你想得到更快的执行速度,你也可以在数据库上写存储过程proc

3、单纯的数据查询 

EF使用AsNoTracking(),无跟踪查询技术(查询出来的数据不可以进行修改)

例如:

 var user = context.user.AsNoTracking().Where(A => A.Id == 1).FirstOrDefault() ;

                    student.Name = "小明";

                    context.SaveChanges();

 最终不会更新数据库的信息,所以我们在做数据集合查询显示,而又不需要对集合修改并更新到数据库的时候,

 一定不要忘记加上AsNoTracking。

 如果查询过程做了select映射就不需要加AsNoTracking。

 如:db.user.Where(t=>t.Name.Contains("小明")).select(t=>new (t.Name,t.Age)).ToList();

4、 EF 使用 AsNonUnicode

示例:

 using (BingFaTestEntities context = new BingFaTestEntities())

     {

        var a = context.User.AsNoTracking().Where(m => m.Name == DbFunctions.AsNonUnicode("小明")).ToList();


     }

官方解释:LINQ to Entities 运算符,它将输入的字符串视为非 unicode 字符串。

此方法仅适用于 LINQ to Entities 查询。

作用:不加AsNonUnicode SQL中会有 N,加了AsNonUnicode后,SQL中没有N ,使用 N 前缀(查询过程中需要把数据库默认格式转化为Unicode 格式来查询,因此:性能被拉低)

当然如果查询包含中文字符等建议不要使用该方法

5、EF查询多字段组合排序

如果涉及多个字段排序不要都是使用 OrderBy,应该是第一个OrderBy后用ThenBy

示例:

 var list = db.User.Where(m => m.Name.StartsWith("明")).OrderBy(m => m.Number).ThenBy(m => m.Name).ToList();

6、EF count(*)的问题(Any的用法)

场景:查询用户表中是否有小明这个用户

var flag1=db.User.Where(m=>m.Name=="小明").Count()>0

var flag2=db.User.Where(m=>m.Name=="小明").FirstOrDefault()!=null

var flag3=db.User.Any(m=>m.Name=="小明").Count()>0

经过测试性能最高的是用Any 所以判断是否存在尽量采用Any

7、EF的批量删除和新增、修改

使用EF扩展 Entity Framework Extendeds

示例:db.User.AddRange(list);//批量插入


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Genymotion下载设备失败的方法(Connection Timeout)

一直下载不下来,报错。 解决办法: 打开 C:\Users\用户名\AppData\Local\Genymobile目录 打开genymotion.log文件,在里面最下面几行,找到如下日志 [Debug] Downloading file "http://files2.genymotion.com/dists/4.4.4/ova/…

寻仙服务器要维护多久,寻仙手游几天开一个区

摘要寻仙手游最新开服时间表IOS和安卓,寻仙手游什么时候新增开服,开服时间公告。我们将于8月17日(周四)凌晨5:00-9:00对全服进行停机更新,请您提前保存游戏进程,安全下线。听到很多小伙伴都在讨论寻仙手游几天开一个区&#xff0c…

Linux常用初级指令介绍

touch 文件名 ------可创建一个文件(白色的字体)rm * -rf -------删除当前路径下的全部文件Ctrlc :----强行终止当前程序Ctrld -----退出终端Ctrls ----暂停当前程序,然后按下任意键恢复运行Ctrlz ----将当前程序放在后台运行,回…

如何写出安全的API接口

通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出。对于安全也是相对的,下面我来根据安全级别分析1.完全开放的接口有没有这样的接口,谁都可以…

Linux系统文件编程(1)

打开文件 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);open----返回的是文件描述符是整形数(文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维…

【收集】常用的cmd命令

运行操作CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本)CMD命令锦集1. gpedit.msc-----组策略2. sndrec32-------录音机3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是…

MVC框架详解--Servlet+JSP+JavaBean模式(MVC)开发复杂的web应用

孤傲苍狼 javaweb学习总结(二十二)——基于ServletJSPJavaBean开发模式的用户登录注册 转载于:https://www.cnblogs.com/yangjj08/p/10153657.html

Linux文件编程(2)

文件打开创建补充 &#xff08;1&#xff09;O_EXCL O_EXCL和O_CREAT配合使用 若文件不存在则创建文件 若文件存在则返回-1 代码演示 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdio.h> int main() {int fd;fdope…

IT技术人员必须思考的几个问题

1.搞IT的是屌丝、码农、程序猿?人们提到IT人的时候&#xff0c;总会想到他们呆板、不解风情&#xff0c;专注于IT技术&#xff0c;就算性感的美女躺在旁边也无动于衷。事实真的是这样吗?虽说不能完全否定有这样的情况存在&#xff0c;但这是IT人普遍的特点吗?而其它行业也有…

37个JavaScript基本面试问题和解答

https://www.zcfy.cc/article/37-essential-javascript-interview-questions-and-answers1、使用typeof bar “object”来确定bar是否是一个对象时有什么潜在的缺陷&#xff1f;这个陷阱如何避免&#xff1f;尽管typeof bar “object”是检查bar是否是对象的可靠方法&#xff0…

封装cookie.js、EventUtil.js、

最近学习了javascript&#xff0c;封装好的东西看起来舒服&#xff0c;以备需要的时候拉出来&#xff0c;jquery对javascript做了很好的封装&#xff01;以后会多用jquery多些var CookieUtil {get: function (name){var cookieName encodeURIComponent(name) "",c…

实现linux cp 命令和修改配置文件

cp指令用来代码的拷贝 以下由文件编程代码实现 代码演示 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdio.h> #include <unistd.h> #include <string.h>#include <stdlib.h> int main(int argc…

最实用前端开发框架对比评测

现在&#xff0c;各种开发框架层出不穷&#xff0c;但是&#xff0c;真正的精品却为数不多。今天我们根据Github上的流行程度整理了2014年最受欢迎的5个前端开发框架&#xff0c;并进行对比说明&#xff0c;希望帮助有需要的朋友选择合适自己的前端框架。1. BootstrapBootstrap…

HBase1.0.0 实现数据增删查

HBase1.0.0 即Hadoop 2.6 采用maven 的方式实现HBase数据简单操作 import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.a…

linux 写结构体到文件

将整数写入到文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdio.h> #include <unistd.h> #include <string.h>#include <stdlib.h> int main() {int fd;int data100;int data20;fdopen("…

程序员常访问的国外技术交流网站

技术人员经常会在各种技术交流社区游逛&#xff0c;大家互相学习、交流、分享、帮助。互联网拉近了地球人的距离&#xff0c;让全世界的技术人员可以聚集在一起分享交流。当然因为多方面原因&#xff0c;通常最新最权威的技术知识传到国内存在一定“时差”。本文将给大家分享技…

标准C库对文件操作的引入

modeopen和fopen的区别 fopen、fread、fwrite的使用 &#xff08;1&#xff09;fopen FILE *fopen(const char *path, const char *mode);path&#xff1a;文件路径 mode&#xff1a;以什么权限打开&#xff0c;要用双引号 它的返回值并不是文件描述符 若失败返回NULL 若操作成…

转载爱哥自定义View系列--Paint详解

上图是paint中的各种set方法 这些属性大多我们都可以见名知意&#xff0c;很好理解&#xff0c;即便如此&#xff0c;哥还是带大家过一遍逐个剖析其用法&#xff0c;其中会不定穿插各种绘图类比如Canvas、Xfermode、ColorFilter等等的用法。 set(Paint src) 顾名思义为当前画笔…

只有程序员才懂这些黑色幽默!

也是机缘巧合&#xff0c;让我一个之前工作从未接触过程序员的人&#xff0c;现在成天和程序员打交道&#xff0c;要知道&#xff0c;不懂技术&#xff0c;往往他们想和你幽默的搞笑一下&#xff0c;未必能读懂。都说程序员情商低&#xff0c;不爱说话&#xff0c;比较闷骚。可…

tiny4412 linux+qtopia nfs网络文件系统的挂载

1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine root/dev/nfs nfsroot192.168.1.131:/home/tiny4412/rootfs_qtopia_qt4 ip192.168.1.230:192.168.1.131:192.168.1.1:255.255.255.0::eth0:off rootfstypenfs consolettySAC0,115200 init/linuxrc ctp2 skipcaliy uh…