• 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的本地镜像。

  • 相关阅读:
    使用sshpass方式实现ssh自动登陆
    MySQL高可用负载均衡
    linux 查看文件夹下的文件个数(当前目录的文件数)
    centos6.5 rsync+inotify实现服务器之间文件实时同步
    Linux shell之数组
    Shell脚本 $0, $#, $*, $@, $?, $$等变量说明
    Linux输出重定向>和>>区别
    EXCEL操作实用学习笔记
    mysql的学习笔记-视图
    mysql学习笔记-索引
  • 原文地址:https://www.cnblogs.com/56982173513871739239lex/p/10772738.html
Copyright © 2020-2023  润新知