EF第一次加载慢或过一段时间不访问时再次访问加载慢问题

优化方案:

  1. EF Pre-Generated Mapping Views(预生成映射视图)

         在应用程序初始化时一次性触发所有的DbContext进行mapping views的生成操作——调用StorageMappingItemCollection的GenerateViews()方法

        Application_Start加入下面代码

using (var dbcontext = new CnblogsDbContext())
{
  var objectContext = ((IObjectContextAdapter)dbcontext).ObjectContext;
  var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace);
  mappingCollection.GenerateViews(new List<EdmSchemaError>());
}
 

   2.安装Application Initialization

   3.用Ngen安装生成EF的本地镜像

 由于C#是使用实时 (JIT) 编译器编译原始程序集。因此第一次运行C#程序(或Dll)时,程序的启动非常慢。为了提高用户的体验,可以用Microsoft的供的本机映像生成器 (Ngen.exe) 提高程序的性能。Ngen.exe 创建本机映像(包含经编译的特定于处理器的机器代码的文件),并将它们安装到本地计算机上的本机映像缓存中。运行库可从缓存中使用本机映像,而不是使用实时 (JIT) 编译器编译原始程序集。

1)在命令行中定位到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727。因为Ngen.exe存放在这里,如果不定位,Ngen.exe无法正确定执行。

cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

2)生成本机本机映像。

ngen install D:\SystemTool\ManagerNote.dll   (备注:Dll方式)

 ngen install D:\SystemTool\ManagerNote.exe  (备注:exe方式)

3)卸载本机本机映像,请使用与安装时相同的命令行选项。

ngen uninstall D:\SystemTool\ManagerNote.dll

注意:这里根据你自己机器(是32还是64)和.net版本,选择相应的命令,只需要安装EntityFramework.SqlServer.dll

4.iis设置 闲置超时(时间)

 

 

 

因为安依赖EntityFramework.dll,会自动安装生成EntityFramework.dll的本地镜像。

 

posted @ 2019-10-17 16:34  尼哈  阅读(356)  评论(0编辑  收藏  举报