在 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 互转 https://www.cnblogs.com/RexSheng/p/10928375.html
来源: http://www.bubuko.com/infodetail-3073187.html