Entity Framework的性能优化:

1.使用MergeOption.NoTracking 
(发现添加这个代码后, 导致"The object cannot be deleted because it was not found in the ObjectStateManager."错误,解决办法为, 先调用entity实例的Attach(deleteObj),参数为要删除的对象,然后调用ObjectStateManager.ChangeObjectState(deleteObj, EntityState.Deleted),具体参考
http://www.cnblogs.com/Benjamin/archive/2012/10/24/2736739.html)
  在EF生成的ObjectContext的构造里设置MergeOption, 如:
    public partial class protocoldbEntities : ObjectContext
{
#region Constructors /// <summary>
/// Initializes a new protocoldbEntities object using the connection string found in the 'protocoldbEntities' section of the application configuration file.
/// </summary>
public protocoldbEntities() : base("name=protocoldbEntities", "protocoldbEntities")
{
this.protocolnodes.MergeOption = MergeOption.NoTracking;
this.protocolversionhistories.MergeOption = MergeOption.NoTracking;

this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
2.    使用IQueryable和Compiled Queries
     如: 定义一个Func变量,   CompiledQuery.Compile中传入entity对象,查询结果,以及可选的查询条件 。此例中,protocolDB是entity, 包含protocolnodes表, 
                    //                
                    private static Func<protocoldbEntities, string, protocolnode> _protocolNodeByUIDQueryFunc;
  
                    //
             if (null == _protocolNodeByUIDQueryFunc)
                    {
_protocolNodeByUIDQueryFunc = CompiledQuery.Compile<protocoldbEntities, string, protocolnode>((ctx, uid) =>
ctx.protocolnodes.FirstOrDefault(p => p.ProtocolNodeUID == uid)
);
} protocolnode temp = _protocolNodeByUIDQueryFunc.Invoke(protocolDB, UID);
                    protocolDB.Refresh(RefreshMode.StoreWins, temp);//必须调用, 这样查询的数据才是数据库最新的,不然会出现数据库获取的数据是旧的。
3.     创建视图
http://blogs.msdn.com/b/adonet/archive/2008/06/20/how-to-use-a-t4-template-for-view-generation.aspx

http://www.asp.net/web-forms/tutorials/continuing-with-ef/maximizing-performance-with-the-entity-framework-in-an-asp-net-web-application

优化EF的性能的更多相关文章

  1. C#实用杂记-EF全性能优化技巧

    原文链接:http://www.makmong.com/947.html#comment-31 EntityFramework 优化建议 2016年1月15日 下午4:54 LEILINKANG   ...

  2. 你是否还在质疑EF的性能

    1. 写在前面的话 一直没有写博客的习惯,感觉太浪费时间,没有那么多精力,其实仔细一想,写博客是一种习惯,也是一种心境,同时也是对自己所掌握的知识结构的一个梳理过程,对自己知识体系的一个巩固,同时也是 ...

  3. 第八节: EF的性能篇(一) 之 EF自有方法的性能测试

    一. 开发中常见的性能问题 我们在日常开发过程中,由于一些不好的习惯,经常会导致所写的代码性能低下,却毫无发觉,下面就总结一下常见的一些性能问题. 1. 真假分页 ① 假分页: db.xxx.toLi ...

  4. 第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题

    一. 综述 该模块主要介绍:EF的性能优化插件Z.EntityFramework.Extensions,该插件收费. (一). 简介 1. 相关网站:http://www.zzzprojects.co ...

  5. MVC教程--MiniProfiler.EF监控调试MVC和EF的性能

    上一篇谈到mvc中ef输出执行sql日志:来谈用mvc开发项目的调试和性能监控.EF框架自动给我生成sql语句,当我们的程序遇到性能问题的时候我们可以用MiniProfiler.EF来监控调试MVC和 ...

  6. 如何快速优化手游性能问题?从UGUI优化说起

    WeTest 导读   本文作者从自身多年的Unity项目UI开发及优化的经验出发,从UGUI,CPU,GPU以及unity特有资源等几个维度,介绍了unity手游性能优化的一些方法.   在之前的文 ...

  7. SQL常见优化Sql查询性能的方法有哪些?

    常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...

  8. CSS性能分析,如何优化CSS提高性能

    不负十年后的自己,共勉! 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如减少HTTP请求,利用工具对资源进行合并压缩,脚本置底,避免重复请求,css sp ...

  9. EF的性能改善和思考

    EF是个工具,用的好了性能就会很好,用的不好性能就会有很大损失. 先从EF的设计思想来讲解 EF的初衷是根据缓存中的实体对象,以及实体对象的状态(删除.更新.添加)来对数据库进行操作,这些实体对象.以 ...

随机推荐

  1. items" does not support runtime expression

    <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 更改为  <%@tagl ...

  2. 完好用户体验: 活用window.location与window.open解决页面跳转问题

    原文地址: JavaScript Redirects and window.open原文日期: 2014年08月27日翻译日期: 2014年08月31日翻译人员: 铁锚 (译者注: 本文解决的是按 C ...

  3. memcached 搭建

     linux 下memcached 的搭建 memcached 下载地址:http://www.danga.com/memcached/dist/ libevent 下载地址:http://libev ...

  4. share初始化

    要看懂share先看与map的交互以及跨地图的交互 share初始化 void Share::ShareInit(I_DataLayer* data_layer) { // 加载xls表 if(!Lo ...

  5. 兼容性强、简单、成熟、稳定的RTMPClient客户端拉流功能组件EasyRTMPClient

    EasyRTMPClient EasyRTMPClient拉流功能组件是EasyDarwin流媒体团队开发.提供和维护的一套非常稳定.易用.支持重连的RTMPClient工具,SDK形式提供,全平台支 ...

  6. python _、__和__xx__的区别(转)

    本位转载自:http://www.cnblogs.com/coder2012/p/4423356.html "_"单下划线 Python中不存在真正的私有方法.为了实现类似于c++ ...

  7. HttpClient 访问 https 出现peer can't

    package util; import java.security.cert.CertificateException; import javax.net.ssl.SSLContext;import ...

  8. python书写日志的重要性?

    转自:https://blog.csdn.net/weixin_43063753/article/details/82899395 程序为什么要写日志?#为了能够在程序在运行过程中记录错误,方便维护, ...

  9. regularexpression_action

    re.compile('"ssid":"[^"]*"}',re.MULTILINE) regex ,str_= re.compile('"s ...

  10. Chart.js 动态图表的使用

    一.相关资料 1. 简介 Chart.js 是一个基于 HTML5 的简单的面向对象的图表库,支持包括 IE7/8 和所有现代浏览器.支持六种图标:曲线图(Linecharts).柱状图(Barcha ...