2013-12-21 64 views
2

使用的DbContext后开放。但它没有发生。即使在ctx.Dispose()之后。连接保持净

我可以关闭所有打开的连接的唯一方法是clearAllPools方法。 我做错了什么? 谢谢。

+9

联合连接不会在物理上关闭,它们会重置。这是连接池的正常操作,如果你做的都正确,不应该影响你。 – GSerg

+0

您是否在您的类TestDatabaseEntitites中实现了Dispose,并在处理期间或使用sql连接之后关闭连接? – Jade

+0

@Jade,他使用'using ...'代码的事实实现了Dispose。 '使用'是'IDisposable'。 – Tico

回答

1

.Net中的连接池连接通过设计保留在幕后。这是因为打开与数据库的连接通常是一个非常昂贵的操作,需要几秒钟的时间。

由于这个原因,关闭一个连接只会重置它,以便未来Open只会传递旧的重置连接而不是打开一个新连接。

0

该回答是从here

称为的DbContext是非常轻量的目的。

无论您的DbContext是否保持活动状态,或者在进行调用之前将其实例化都没关系,因为实际的数据库连接仅在SubmitChanges或Enumerate查询时打开(在这种情况下,它在枚举结束时关闭)。

在你的具体情况。根本不重要。