AddDbContext 或 AddDbContextPool

2024-01-11

对于 Asp.net Core 应用程序,我们必须使用哪一个?AddDbContext or AddDbContextPool?根据 EF Core 文档,AddDbContextPool提供高性能,但默认的 Asp.net Core 项目模板使用AddDbContext.


答案就在这里(在“DbContext pooling”下):https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling

DbContext不是线程安全的。所以你不能重复使用相同的DbContext同时进行多个查询的对象(奇怪的事情发生)。通常的解决方案是创建一个新的DbContext每次需要时都反对。就是这样AddDbContext does.

然而,重用a并没有什么问题。DbContext前一个查询已经完成后的对象。就是这样AddDbContextPool做。它保留了多个DbContext对象存活并为您提供一个未使用的对象,而不是每次都创建一个新对象。

您使用哪一个取决于您。两者都会起作用。池化有一些性能提升。然而,文档警告说,如果您在您的DbContext类不应在查询之间共享,那么您不应该使用它。我认为这种情况很少见,因此在大多数情况下池化应该是合适的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AddDbContext 或 AddDbContextPool 的相关文章

随机推荐

  • 如何模拟类的内部方法?

    我有一个有内部方法的类 我想模拟内部方法 但我无法模拟它 即它不是调用模拟函数而是调用原始函数 有什么办法可以实现这一点吗 编辑 实际上我是最小起订量的新手 我有很多类和类的方法来使用最小起订量进行测试 许多类是内部的 许多有内部方法 许多
  • 为什么我的 GitHub 页面不更新其内容?

    我一直在关注官方指南 pages github com https pages github com 到目前为止 我已经创建了本地存储库并将其推送到 GitHub 但是 无论我做什么更改 我都可以在 GitHub 的存储库中看到它 但是no
  • IE 中的多行按钮

    我目前处于一种可怕的情况 需要我在两行上设置 按钮 类型的输入样式 按钮上的固定宽度会导致按钮内的文本在除 IE 之外的所有其他浏览器中换行 因此 我的问题是 如何指定 value Button to Wrap 的输入在 IE 中换行到两行
  • 如何判断在 Dock 上放置过程中是否按下了修饰键

    我的 Cocoa 应用程序支持将文件拖放到其 Dock 图标上 但我希望根据是否按住修饰键 Command Option 等 来实现不同的行为 我尝试检查modifierFlags为了currentEvent 但无论是否按住修饰符 它们都是
  • 当我获取脚本时终端关闭(在开始时使用点运行)

    这是我的代码 bin bash if 1 then exit 0 fi array cat 1 let b array 1 count 0 for i in 1 7 do for j in 30 37 do for n in 40 47 d
  • 三元运算符的右结合性

    std cout lt lt true high pass false fail pass 是相同的 std cout lt lt true high pass false fail pass 既然三元运算符是右结合的 为什么我们不先进行右
  • 为什么java的inputstream.close()会阻塞?

    我的 Java 程序使用 ProcessBuilder redirectErrorStream 设置为 true 并有一个循环运行进程的输入流的 read 方法 该方法是阻塞的 然后我调用的外部程序停止等待输入和标准输入 我现在想终止该进程
  • 在 Spring MVC 中使用 Jackson JSON 时如何默认启用 Pascal 大小写?

    我有一个使用 Spring MVC 创建和处理多个 REST 端点的项目 我目前正在使用 Jackson 自动处理 JSON 的序列化 反序列化 RequestBody and ResponseBody注释 我已经让杰克逊开始工作了 所以我
  • 将 cqlsh 与 ssl 结合使用

    我已经在我的 cassandra 节点中启用了 ssl 加密 并且我正在尝试弄清楚如何使用带有 ssl 的 cqlsh 连接到我的节点 当我跑步时 cqlsh ssl我收到以下错误 Validation is enabled SSL tra
  • 我们可以用 ES6 Generator 做哪些 for 循环做不到的事情?

    我深入了解了 ES6 功能 Generators 引起了我的注意 我突然想到的一件事是链接 Promise 对象 而我无法使用循环来做到这一点 我们还能做哪些以前做不到的其他机制 我确实明白这是一个广泛的问题 但目前我除了承诺之外什么也想不
  • G1垃圾收集器:为什么幸存者空间总是满的?

    这是输出jmap heap命令 Survivor Space regions 52 capacity 54525952 52 0MB used 54525952 52 0MB free 0 0 0MB 100 0 used 我已经执行了很多
  • 使用UniversalImageDownloader的ListView滚动不平滑

    我正在使用包含图像的 ListView 这些图像是从互联网加载到适配器内的 因此我正在使用通用图像下载器 不幸的是 当我向下滚动需要下载新内容的位置时 ListView 的滚动会短暂 滞后 我实际上期望像 ListView 这样的行为滚动完
  • GitHub 组织未出现在“持续部署”页面中

    我的个人 GitHub 帐户属于五个组织 从 GitHub 设置 Azure 持续集成时 五个组织中只有四个出现在列表中 我们尝试过登录和注销 GitHub 和 Azure 此外 我们尝试更改 Azure 中的帐户 然后重新添加相同的帐户
  • 按新指南随机排序

    为了从 Sql 查询中以随机顺序获取结果 我通常按新的 Guid 进行排序 我之前已经使用实体框架完成了此操作 但由于某种原因它现在不起作用 例如 使用 Adventureworks2008r2 数据库 我在 LinqPad 中运行以下查询
  • 如何使用 Javascript 将 cookie 存储在本地存储中?

    我有一个适用于 Android 希望以后还有 iPhone 的应用程序 它基于 Javascript 并使用 Phonegap Applaud 制作成应用程序 不幸的是 设置和获取 cookie 在 Android 上不起作用 这可能是 A
  • 内容仅在我单击时出现在页面上

    我已经通过 Angular 2 应用程序连接到 Firebase 3 没有什么特别的 只是一个包含一小部分数据的简单表 在我的 Angular 2 应用程序中 我在服务中创建了服务 我创建了一个侦听器事件 如下所示 getAddedBugs
  • 创建 JavaScript 自定义事件

    我想用 JavaScript 创建一个自定义事件 我有一个 WPF 应用程序 里面有一个 WebBrowser 还有一个带有 JavaScript 的 HTML 页面 我使用打印机工作 当打印机的状态发生变化时 它会触发 NET 中的事件
  • 将特色图像添加到 wp_nav_menu 项目

    这是一个自我问答 如何修改 wp nav menu 输出中出现的文本 html 例如 我想为页面和类别添加特色图像 您可以看到使用自定义步行器执行此操作的示例 但对于小的更改来说 代码非常复杂 当然有办法用过滤器来做到这一点吗 这是我在 W
  • 基于范围的临时对象

    我知道 一般来说 基于范围的临时对象的生命周期for循环扩展到整个循环 我读过C 11 基于范围的 for 语句 range init 生命周期 https stackoverflow com questions 9657708 c11 t
  • AddDbContext 或 AddDbContextPool

    对于 Asp net Core 应用程序 我们必须使用哪一个 AddDbContext or AddDbContextPool 根据 EF Core 文档 AddDbContextPool提供高性能 但默认的 Asp net Core 项目