每次不使用都会创建不同的数据库上下文是否有问题

第二

好吧,我想知道使用以下方法可能出现的问题

CreateContextFactory().Create().QueryOpenConnectionCount();

代替:

using (var context = CreateContextFactory().Create())
{
      openConnectionCount = context.QueryOpenConnectionCount();
}
return openConnectionCount;

以及类似问题是否存在:

CreateContextFactory().Create().QueryOpenConnectionCount1();
CreateContextFactory().Create().QueryOpenConnectionCount2();
CreateContextFactory().Create().QueryOpenConnectionCount3();

这是因为我在类中有一些如上所述的方法是开放式db上下文,我可以为它们创建一个using语句,但是因此我需要为所有方法传递上下文,并且还需要重构一个使用db上下文执行事务(因为它在内部创建自己的上下文)。那么,让代码保持这种方式存在什么问题呢?

马克·格雷韦尔

通常,数据上下文“拥有”一个连接,以避免不断地从池中获取一个连接并对其进行初始化。处理数据上下文通常会处理该连接。

所以:如果你继续创建数据上下文恰当地处置他们,你是出血的连接,至少要等到GC中,并撤消步骤残局(释放非托管的连接返回到非托管池的一部分,如果一个非托管的部分)。

这是一件坏事,并严重限制了可伸缩性,并增加了与数据库服务器的打开连接数。因此,是的,您应该处理数据上下文。将其扩展到一般情况:完成后,请处置您负责的任何 IDisposable事物随着或许有少数例外(,等)。HttpClientDataTable

请注意,如果您的using语句到达当前作用域的末尾(即到下一个范围),则C#8的语法稍微有点麻烦(我会说“ nicer”,但这是主观的;我非常喜欢})。

using var context = CreateContextFactory().Create();
return context.QueryOpenConnectionCount();

甚至使用早期的C#,您都可以使其变得更简单并删除本地:

using (var context = CreateContextFactory().Create())
{
    return context.QueryOpenConnectionCount();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每次我在ASP.NET MVC中调用动作时都会创建数据库上下文

来自分类Dev

使用不同的上下文访问数据库

来自分类Dev

使用ToList()和.AsQueryable()连接两个不同的数据库上下文有什么区别?

来自分类Dev

如何使用 2 个不同的连接注册相同的数据库上下文?

来自分类Dev

实体框架:数据库上下文可以在不同的模式之间具有外键吗?

来自分类Dev

工作单元模式不允许我创建没有选项的数据库上下文

来自分类Dev

在ASP控制器内创建数据库上下文实例有意义吗?

来自分类Dev

从现有数据库和.sql文件创建上下文初始化器

来自分类Dev

EF Core 上下文是否在运行时保存所有数据库值?

来自分类Dev

使用 SQLite 数据库将适配器 onBindViewHolder itemView 上下文转换为类上下文

来自分类Android

使用getDefaultSharedPreferences,上下文有问题

来自分类Dev

带有新数据库的EF6生成“自创建数据库以来,支持<Database>上下文的模型已更改。”

来自分类Dev

应用程序数据库上下文错误的问题

来自分类Dev

避免在具有多个数据库上下文的 EF 中延迟加载的通用实现(使用部分类)

来自分类Dev

首先使用现有DbConnection的C#实体框架6上下文对象数据库

来自分类Dev

从Entity Framework Core中的cookie和基本路径创建数据库上下文

来自分类Dev

自创建数据库以来,支持<Database>上下文的模型已更改

来自分类Dev

CoreStore 在上下文中创建对象而不保存到数据库

来自分类Dev

自创建数据库以来,支持“ ApplicationDbContext”上下文的模型已更改

来自分类Dev

自创建数据库以来,支持“ServicesContext”上下文的模型已更改

来自分类Dev

自创建数据库以来,支持“ DataContext”上下文的模型已更改

来自分类Dev

尝试在每个 DB 上下文上创建我的数据库时出错

来自分类Dev

创建适当的数据库上下文.NET Core 3

来自分类Dev

得到错误“自创建数据库以来,支持'DBContext'上下文的模型已更改。”

来自分类Dev

我们是否必须显式添加到数据库上下文?

来自分类Dev

实体框架中的会话之间是否共享数据库上下文?

来自分类Dev

设置上下文时,您是否链接文件名或数据库名?

来自分类Dev

使用数据库数据更新上下文后,React 'useContext' 钩子不会重新渲染

来自分类Dev

为什么我的数据库上下文被处置

Related 相关文章

  1. 1

    每次我在ASP.NET MVC中调用动作时都会创建数据库上下文

  2. 2

    使用不同的上下文访问数据库

  3. 3

    使用ToList()和.AsQueryable()连接两个不同的数据库上下文有什么区别?

  4. 4

    如何使用 2 个不同的连接注册相同的数据库上下文?

  5. 5

    实体框架:数据库上下文可以在不同的模式之间具有外键吗?

  6. 6

    工作单元模式不允许我创建没有选项的数据库上下文

  7. 7

    在ASP控制器内创建数据库上下文实例有意义吗?

  8. 8

    从现有数据库和.sql文件创建上下文初始化器

  9. 9

    EF Core 上下文是否在运行时保存所有数据库值?

  10. 10

    使用 SQLite 数据库将适配器 onBindViewHolder itemView 上下文转换为类上下文

  11. 11

    使用getDefaultSharedPreferences,上下文有问题

  12. 12

    带有新数据库的EF6生成“自创建数据库以来,支持<Database>上下文的模型已更改。”

  13. 13

    应用程序数据库上下文错误的问题

  14. 14

    避免在具有多个数据库上下文的 EF 中延迟加载的通用实现(使用部分类)

  15. 15

    首先使用现有DbConnection的C#实体框架6上下文对象数据库

  16. 16

    从Entity Framework Core中的cookie和基本路径创建数据库上下文

  17. 17

    自创建数据库以来,支持<Database>上下文的模型已更改

  18. 18

    CoreStore 在上下文中创建对象而不保存到数据库

  19. 19

    自创建数据库以来,支持“ ApplicationDbContext”上下文的模型已更改

  20. 20

    自创建数据库以来,支持“ServicesContext”上下文的模型已更改

  21. 21

    自创建数据库以来,支持“ DataContext”上下文的模型已更改

  22. 22

    尝试在每个 DB 上下文上创建我的数据库时出错

  23. 23

    创建适当的数据库上下文.NET Core 3

  24. 24

    得到错误“自创建数据库以来,支持'DBContext'上下文的模型已更改。”

  25. 25

    我们是否必须显式添加到数据库上下文?

  26. 26

    实体框架中的会话之间是否共享数据库上下文?

  27. 27

    设置上下文时,您是否链接文件名或数据库名?

  28. 28

    使用数据库数据更新上下文后,React 'useContext' 钩子不会重新渲染

  29. 29

    为什么我的数据库上下文被处置

热门标签

归档