Entity Framework启动优化

EF+MVC的网站在第一次打开的时候,速度会很慢;闲置一段时间再次打开,重启应用程序池都会很慢。

程序更新,应用程序池重启、回收后,需要重新加载程序文件。

1、安装Application Initialization

这是IIS8的内置功能,对于IIS7.5,微软提供了一个扩展包来支持这个功能。

Application Initialization Module for IIS 7.5

http://www.iis.net/downloads/microsoft/application-initialization

这个扩展并没有提供操作界面,需要操作界面的话,需要下载第三方插件ApplicationInitializationInstaller

配置应用程序池的StartMode为AlwaysRunning

配置站点开启Preload和DoAppInitAfterRestart

2、ngen生成EF的本地镜像

EF从版本6开始不再默认随.Net Framework安装,程序启动时,EF通过just-in-time compiler将MSIL编译成本地代码,存储在内存中。

使用cmd命令提示符进入项目dll所在目录,一般为bin,运行ngen

32bit

%WINDIR%\Microsoft.NET\Framework\v4.0.30319\ngen install EntityFramework.SqlServer.dll

64bit

%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install EntityFramework.SqlServer.dll

3、禁用_MigrationHistory

Code First首次访问EF时会访问_MigrationHistory,检查数据库与实体类是否匹配,以保证EF可以正常运行。

Application_Start中加代码Database.SetInitializer<MyContext>(null);来禁用这个功能。

时间: 2024-08-28 17:03:57

Entity Framework启动优化的相关文章

让Entity Framework启动不再效验__MigrationHistory表

Entity Framework中DbContext首次加载OnModelCreating会检查__MigrationHistory表,作为使用Code Frist编程模式,而实际先有数据库时,这种检测就是多余的了,所以需要屏蔽,在EF 4.1之前可以使用在OnModelCreating函数总加入下面语句来屏蔽这种检测: modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 而到4.3之后需要使用,上列语句以被MSDN明确表

Entity Framework 6 预热、启动优化

虽然文章题目是针对EF的,但涉及的内容不仅仅是EF. 场景介绍 目前在做的一个项目,行业门户,项目部分站点按域名划分如下: user.xxx.com:用户登陆注册 owner.xxx.com:个人用户后台 company.xxx.com:企业后台 manage.xxx.com:网站管理 其中user.xxx.com为个人用户及企业用户登陆入口,manage.xxx.com/login为网站管理后台登陆入口. 四个项目都是mvc4+ef6+autofac+automapper. 补充信息: .ne

初次开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、目前性能还不够好

继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-host测试,但是官方说运行环境的MONO版本至少需要3.4.1,我去年买了个表,至本文发布为止,你让我下地狱去找3.4.1吗,硬着头皮用3.4.0搞了一晚上,MAC一直停留在 httpapi.dll出错,Ubuntu Server 12.0.4 是不认其中的几个DLL包,具体哪几个也忘了,过段时间有了稳定版本再

Entity Framework的启动速度优化

刚开始的时候没有太在意,但是随着系统的发布,这种初次请求,或者闲置若干时间后第一次请求的漫长等待使得App的体验很差,很多时候App加载好半天数据都没过来.如果前端没处理好,还会导致App的假死.所以就花了点功夫研究下什么原因导致. 刚开始的时候,还以为是WebService的框架出了问题.后面使用App,通过Fiddler看到了,某次请求db.竟然长达6s中,并且每次导致请求超时都出现在db.访问这一块,这显然不正常.早期,我们访问数据库使用的是原始的ADO.NET 执行SQL语句,如果有参数

Entity Framework 数据并发访问错误原因分析与系统架构优化

本文主要记录近两天针对项目发生的数据访问问题的分析研究过程与系统架构优化,我喜欢说通俗的白话,高手轻拍 1. 发现问题 系统新模块上线后,使用频率较高,故在实际使用和后期的问题重现测试中,产生了一下系列的数据访问错误 错误是比较常见的错误 2. 分析问题 系统的架构为前端.业务层与数据层三层架构,采用Entity Framework 3.5作为数据处理技术,采用shared context per request模式,参照的是codeplex上的一个示例.示例地址(此文通俗易懂,代码结构也很清晰

Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)

在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建了一个简单的基于泛型的仓储模式的框架,例子也呈现了一个实体框架应用的雏形,本篇继续介绍这个主题,继续深化介绍Entity Framework 实体框架的知识,以及持续优化这个仓储模式的实体框架,主要介绍业务逻辑层的构建,以及利用Unity和反射进行动态的对象注册. 1.EDMX文件位置的调整 我们从上篇例子,

Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常

错误信息: “System.Data.Entity.Core.EntityCommandExecutionException”类型的异常在 EntityFramework.SqlServer.dll 中发生,但未在用户代码中进行处理. 其他信息:执行命令定义时出错.有关详细信息,请参阅内部异常. 跟踪代码找到详细信息: Entity Framework已有打开的与此Command相关联的DataReader,必须首先将它关闭. EF内部是使用DataReader作为资料存取,所以如果没关闭连接就

EntityFramework优化:第一次启动优化

1. 预先生成视图 通过代码的方式来预先生成视图,要求EntityFramework是6.0及以上版本. 控制台程序: using System.Data.Entity.Infrastructure; using System.Data.Entity.Core.Mapping; using System.Data.Entity.Core.Metadata.Edm; using (var ctx = new LibingContext()) { var objectContext = ((IObj

Entity Framework 6 Recipes 2nd Edition(9-3)译-&gt;找出Web API中发生了什么变化

9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Frist实现数据访问管理. 本例,我们模拟一个N层场景,用单独的客户端(控制台应用)来调用单独的基于REST服务的Web网站(WEB API应用) . 注意:每层使用单独的Visual Studio 解决方案, 这样更方便配置.调试和模拟一个N层应用. 假设有一个如Figure 9-3所示的旅行社和预订