首页 > 数据库技术 > 详细

EntityFramework进阶(二)- DbContext预热

时间:2019-05-27 11:02:15      阅读:627      评论:0      收藏:0      [点我收藏+]

本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处

在DbContext首次调用的时候,会很慢,甚至会有5,6秒的等待,通常称为冷查询。再次调用的时候,几毫秒就能请求完。原因是首次调用的时候,DbContext会验证模型,缓存视图信息等操作。我们可以提前预生成视图来缓解延迟。

/// <summary>
/// dbcontext预热
/// 
/// </summary>
private void PreLoad<TDbContext>() where TDbContext:DbContext,new()
{
    using (var dbcontext = new TDbContext())
    {
        var objectContext = dbcontext.GetObjectContext();
        var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace); 
        mappingCollection.GenerateViews(new List<EdmSchemaError>());
    }  //对程序中定义的所有DbContext逐一进行这个操作
}

dbcontext.GetObjectContext()方法的实现参考上篇博客 EntityFramework进阶(一)- DbContext与ObjectContext互转

 

EntityFramework进阶(二)- DbContext预热

原文:https://www.cnblogs.com/RexSheng/p/10928382.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!