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

第二

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

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

在我的域模型中有数据库上下文是否可以

来自分类Dev

有使用数据库上下文类的正确方法吗?

来自分类Dev

每次Entity Framework数据库迁移后如何访问上下文

来自分类常见问题

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何结合多个Talend上下文?(例如,不同的数据库连接)

来自分类Dev

具有通用数据库上下文的存储库模式

来自分类Dev

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

来自分类Dev

如何在不使用存储库的情况下共享EntityFramework 6数据上下文?

来自分类Dev

在应用程序上下文之外创建数据库

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用存储库模式时的多个数据库上下文

来自分类Dev

Light在MVC中注入数据库上下文

来自分类Dev

静态数据库上下文混乱

来自分类Dev

Glass上下文数据库null

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    在我的域模型中有数据库上下文是否可以

  5. 5

    有使用数据库上下文类的正确方法吗?

  6. 6

    每次Entity Framework数据库迁移后如何访问上下文

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

    如何结合多个Talend上下文?(例如,不同的数据库连接)

  14. 14

    具有通用数据库上下文的存储库模式

  15. 15

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

  16. 16

    如何在不使用存储库的情况下共享EntityFramework 6数据上下文?

  17. 17

    在应用程序上下文之外创建数据库

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    使用存储库模式时的多个数据库上下文

  27. 27

    Light在MVC中注入数据库上下文

  28. 28

    静态数据库上下文混乱

  29. 29

    Glass上下文数据库null

热门标签

归档