【发布时间】:2019-04-16 02:26:36
【问题描述】:
这个问题很清楚。 DbContext 在其生命周期中是否保持打开的连接? EF核心呢?
【问题讨论】:
-
不,不,除非您通过启动事务并保持打开状态来强制它。否则,它只会在加载或保存时打开一个连接,并在完成后关闭它。您可以使用 SQL Server 探查器或扩展事件轻松验证这一点
-
你听说过connection-pooling吗?它也适用于
DbContext,并且连接字符串指定是否使用它。请参阅:ConnectionString(在下方pooling) -
为什么这个问题?听起来您遇到了不同的问题并认为连接管理有问题?或者认为池连接在某种程度上是个问题?他们不是
-
@PanagiotisKanavos 这就是答案。发布它以获得接受。谢谢。
-
@AndrzejMartyna 我们也不必担心 ADO.NET 的这一点 - 自 2000 年以来就存在连接池,并且 DataSet/DataTable 旨在断开连接。问题只是由于糟糕的编码实践而发生。不幸的是,人们也找到了破坏 EF 和 EF Core 的方法,通过打开和保持事务打开而没有真正的原因,通常是在使用“通用”存储库 antipattern 之后
标签: c# entity-framework lifecycle dbconnection