Entity framework 实体框架:如果打开连接,是否应该关闭连接?

Entity framework 实体框架:如果打开连接,是否应该关闭连接?,entity-framework,database-connection,Entity Framework,Database Connection,我正在从我的ObjectContext获取底层连接。我需要检查连接的状态,必要时打开它。我想知道我是否需要关闭它,或者这是否会照顾到我 不管怎样,我正在处理我的上下文,我认为这正在关闭连接 我应该首先手动打开此连接吗 仅供参考:我有意避免使用方便的方法ExecuteStoredCommand和ExecuteStoredQuery。我们有一些针对旧ADO.NET类的旧代码。我只想公开连接并确保它可以使用。我认为如果您处理上下文,它将为您关闭连接。如果您创建一个新的ObjectContext,连接也

我正在从我的
ObjectContext
获取底层连接。我需要检查连接的状态,必要时打开它。我想知道我是否需要关闭它,或者这是否会照顾到我

不管怎样,我正在处理我的上下文,我认为这正在关闭连接

我应该首先手动打开此连接吗


仅供参考:我有意避免使用方便的方法
ExecuteStoredCommand
ExecuteStoredQuery
。我们有一些针对旧ADO.NET类的旧代码。我只想公开连接并确保它可以使用。

我认为如果您处理上下文,它将为您关闭连接。如果您创建一个新的ObjectContext,连接也将被打开。

实体框架本身管理打开和关闭连接。通常,它会在完成一个命令后关闭一个连接。因此,在使用连接之前,您必须检查连接状态,并在连接关闭时将其打开。完成后,您可以关闭它(而不是处置它!)

当上下文被释放时,连接总是关闭的


如果希望旧代码和实体框架在一个事务中运行,您可能必须将代码包含在
TransactionScope
中。

我不知道打开和关闭连接是否会影响性能。实体框架是否为它运行的每个命令打开和关闭连接?据我所知,是的。但是连接池管理与数据库的实际连接,因此在许多情况下,实际连接甚至可能尚未关闭。例如,请参见。我创建了一个简单的连接管理器类,实现了
IDisposable
。这是一个web应用程序吗?如果是,通常情况下,您根据http请求管理连接,在http请求传入时打开连接,在关闭时关闭连接。您不需要创建新类,ObjectContex或DbContext已经达到了这一目的。我正在使用Ninject的
InRequestScope
来限制我的上下文的生存期。问题在于,
ObjectContext
中的连接在首次使用之前不会打开。有时,旧代码会首先运行。