首页 > 其他分享 >AddDbContextPool EF Core 6.0

AddDbContextPool EF Core 6.0

时间:2022-12-27 07:44:05浏览次数:60  
标签:Core EF DbContext 实例 AddDbContextPool AddDbContext

DbContext 池

DbContext 通常是一个轻型对象:创建和释放它不涉及数据库操作,而大多数应用程序都可以这样做,而不会对性能产生任何明显的影响。 但是,每个 DbContext 确实设置了执行其职责所必需的各种内部服务和对象,而且在高性能场景中,持续这样做的开销可能很大。 对于这些情况,EF Core 可以将 实例池化:在释放 DbContext 时,EF Core 将重置其状态并将其存储在内部池中;当下次请求新的实例时,将返回该池化实例,而不是设置新的实例。 DbContext 池化允许在程序启动时一次性支付 DbContext 设置成本,而不是持续付费

1 依赖注入

使用 ASP.NET Core 应用EF Core模式涉及通过 将自定义类型注册到 DbContextDbContext容器中 AddDbContext 。 然后,将通过控制器或 Razor Pages 中的构造函数参数获取该类型的实例。

若要启用 DbContext 池,只需将 AddDbContext 替换为 AddDbContextPool :

1 2 services.AddDbContextPool<BloggingContext>(     options => options.UseSqlServer(connectionString));

  的 参数将池保留的最大实例数 (在 poolSizeAddDbContextPool EF Core 6.0 中默认为 1024,在早期版本中设置为 128) 。 一旦超过 poolSize,就不会缓存新的上下文实例,EF 会回退到按需创建实例的非池行为。

2.没有依赖注入

使用 ASP.NET Core 应用EF Core模式涉及通过 将自定义类型注册到 DbContextDbContext容器中 AddDbContext 。 然后,将通过控制器或 Razor Pages 中的构造函数参数获取该类型的实例。

若要启用 DbContext 池,只需将 AddDbContext 替换为 AddDbContextPool :

1 2 services.AddDbContextPool<BloggingContext>(     options => options.UseSqlServer(connectionString));

  的 参数将池保留的最大实例数 (在 poolSizeAddDbContextPool EF Core 6.0 中默认为 1024,在早期版本中设置为 128) 。 一旦超过 poolSize,就不会缓存新的上下文实例,EF 会回退到按需创建实例的非池行为。

 

原文:https://docs.microsoft.com/zh-cn/ef/core/performance/advanced-performance-topics?tabs=with-di%2Cwith-constant#dbcontext-pooling

标签:Core,EF,DbContext,实例,AddDbContextPool,AddDbContext
From: https://www.cnblogs.com/Leo_wl/p/17007291.html

相关文章

  • Statefulset控制器
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od313Statefulset控制器13.1概念、原理解读StatefulSet是为了管理有状态服务的问......
  • HTML5和CSS3的一些新特性-视屏,语音,表单,选择器,伪类,结构,before和after选择器,iconmoon 字
    HTML5和CSS3的一些新特性-视屏,语音,表单,选择器,伪类,结构,before和after选择器,iconmoon字体使用方法Html5:1.HTML5新增语义化标签<!DOCTYPEhtml><htmllang="en"><head>......
  • Vue之ref
    ref属性1.被用来给元素或子组件注册引用信息(id的替代者)2.应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)3.使用方式:  1.打标识:```<h1......
  • Codeforces Global Round 14 C. Phoenix and Towers(思维)
    https://codeforces.com/contest/1515/problem/C题目大意:给定一个长度为n的序列a,ai表示方块的高度。每一个方块的高度都在1和q之间。让我们用这n个方块搭建m座塔,两两......
  • C#基础⑧——方法(函数、重载、out、ref)
    目录​​一、什么是方法(函数)?​​​​二、使用方法有什么好处呢?​​​​三、语法:​​​​四、实战演练​​     ​​五、ref和out传参的区别​​​​①、out的传参:​......
  • [CTF] 攻防世界-xff_referer
    X-Forwarded-For:,,https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For大致理解:就是你有代理服务器,它只能看到你最后代理的那个IP,但是用这......
  • SQL外部联合:right outer join、left outer join、full outer join
    SQL将外部联合分为了右外部联合(rightouterjoin)、左外部联合(leftouterjoin)、完全外部联合(fullouterjoin)3个类型。 左外部联合:LEFTOUTERJOIN      ......
  • Codeforces Round #768 (Div. 2)C ,D
    CodeforcesRound#768(Div.2)C,DCC这一道题的大意是从0到n-1,(n一定是2的x次方),我需要找n/2对数对,使得每一个数对(x,y),x&y的和要等于k(k<=n-1)我一开始是没什么思路的,......
  • 在partition中使用xfs文件系统时,sda没有足够的空间可以让grub2嵌入core.img
    背景:安装kylinv10操作系统,在执行系统盘配置的时候报错报错:在partition中使用xfs文件系统时,sda没有足够的空间可以让grub2嵌入core.img原因:磁盘中有冗余的挂......
  • CompletableFuture 专题
     @Bean("taskExecutor")publicExecutorgetAsyncExecutor(){ThreadPoolTaskExecutorexecutor=newThreadPoolTaskExecutor();executor.setCoreP......