zoukankan      html  css  js  c++  java
  • 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 = ((IObjectContextAdapter)ctx).ObjectContext;
        var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace);
        mappingCollection.GenerateViews(new List<EdmSchemaError>());
    
        //var products = ctx.Products.ToList();
    }

      MVC程序:

    protected void Application_Start()
    {
        using (var ctx = new mcccEntities())
        {
            var objectContext = ((IObjectContextAdapter)ctx).ObjectContext;
            var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace);
            mappingCollection.GenerateViews(new List<EdmSchemaError>());
        }
    }

    2. NGen优化

      参考:Entity Framework Improving Startup Performance with NGen (EF6 Onwards)

      主要是针对EF6及以上版本的,因为低于这个版本的自带该特性,在6.0之前的EF中,EF的运行时核心类库也是.NET框架的一部分,其本地映像在.NET 核心类库加载时自动加载,在6.0及之后的版本,EF整个运行时已经被集成到EntityFramework NuGet包中,本地映像需要使用NGen工具来生成才能达到类似的效果。

      NGen的作用以及为什么能够加快应用程序的启动性能:

      .NET框架支持为托管应用或者程序集生成本地映像文件来帮助应用程序更快启动和在一些情况下减少内存占用。

      在应用程序执行之前,通过将托管代码程序集翻译为包含本地机器指令的文件,能够减少.NET JIT编译器在应用程序启动的时候,生成本地指令代码这一过程,从而能够加快应用程序启动。

      NGen使用方法:

      (1)以管理员身份启动控制台cmd程序

      (2)切换到本机.NET Framework目录下:

        32位:%WINDIR%Microsoft.NETFrameworkv4.0.30319

        64位:%WINDIR%Microsoft.NETFramework64v4.0.30319

      (3)运行ngen install  + 程序集的路径和名称

    C:WINDOWSsystem32>cd /d C:WindowsMicrosoft.NETFramework64v4.0.30319
    C:WindowsMicrosoft.NETFramework64v4.0.30319>ngen install F:10-ProjectsLibingLibing.AppinDebugEntityFramework.dll
    C:WindowsMicrosoft.NETFramework64v4.0.30319>ngen install F:10-ProjectsLibingLibing.AppinDebugEntityFramework.SqlServer.dll
  • 相关阅读:
    babel的使用及安装配置
    npm install卡顿问题
    盒模型
    安全性
    字符串方法
    vue
    CSS3
    重载运算符
    装箱拆箱
    模板库
  • 原文地址:https://www.cnblogs.com/libingql/p/9061557.html
Copyright © 2011-2022 走看看