C# DbContext是否在其生命周期中保持打开的连接?

C# DbContext是否在其生命周期中保持打开的连接?,c#,entity-framework,lifecycle,dbconnection,C#,Entity Framework,Lifecycle,Dbconnection,问题很清楚。DbContext是否在其生命周期中保持打开的连接?EF核心呢 正如其他人所指出的,不,它不会,除非手动打开连接并将其传递给DbContext构造函数 具体的详细答案可以在这里找到 而@ajcvickers在中的评论则澄清了这一点: 如果EF创建DbConnection对象,则EF将确保 在释放DbContext时释放。另一方面,如果有的话 其他代码创建DbConnection对象并将其传递给EF,然后 其他代码也有责任处理 适当的连接 类似的规则适用于打开和关闭连接。如果EF打开

问题很清楚。
DbContext
是否在其生命周期中保持打开的连接?EF核心呢

正如其他人所指出的,不,它不会,除非手动打开连接并将其传递给DbContext构造函数

具体的详细答案可以在这里找到

而@ajcvickers在中的评论则澄清了这一点:

如果EF创建DbConnection对象,则EF将确保 在释放DbContext时释放。另一方面,如果有的话 其他代码创建DbConnection对象并将其传递给EF,然后 其他代码也有责任处理 适当的连接

类似的规则适用于打开和关闭连接。如果EF打开 连接完成后,EF将关闭连接 信息技术如果您的代码打开了连接,那么您的代码应该关闭 连接


否和否,除非您通过启动事务并保持其打开状态来强制执行。否则,它仅在加载或保存时打开连接,并在完成后关闭连接。您可以轻松地使用SQL Server事件探查器或扩展事件来验证这一点,您听说过吗?它也适用于
DbContext
,连接字符串指定是否使用它。请参阅:(下面的
)为什么要问这个问题?听起来您遇到了另一个问题,认为连接管理有问题吗?或者认为共享连接在某种程度上是一个问题?他们不是t@PanagiotisKanavos这就是答案。把它贴出来让人接受。谢谢。@AndrzejMartyna我们也不必为ADO.NET担心这个问题-连接池自2000年以来就存在,DataSet/DataTable意味着在断开连接的情况下工作。问题只发生在错误的编码实践中。不幸的是,人们也找到了打破EF和EF Core的方法,通过打开并保持事务的打开,没有真正的原因,通常是在使用“通用”存储库反模式之后。多谢。我还发现了这个链接:由朱莉·勒曼评论。她正在描述潜在的联系到底发生了什么。