2

我正在为一些集成测试动态创建和删除数据库。我在 ADO.NET 级别进行所有数据库管理。对于我使用实体框架的测试,因为实体是我正在测试的一部分。问题是,在我这样做之后:

using (ProjectEntities db = new ProjectEntities(cs)) {
}

我不能再删除数据库了。它说它正在使用中。如何释放它以便可以丢弃它?

我实际上在 ADO.NET 级别遇到了同样的问题,我所做的是:

new SqlCommand("USE [master]", DatabaseConnection).ExecuteNonQuery();

但我不确定如何对实体框架连接执行具有相同效果的操作。我尝试手动处理 db 对象(尽管 using 子句应该保证这一点),并且我还尝试手动关闭 db.Connection。都没有帮助。如果我可以在没有实体框架连接的情况下直接运行 SQL,我相信我能够做到。或者也许还有其他方法?

4

1 回答 1

5

您可能需要显式关闭所有连接,我相信该连接正在被池化,并且它是仍保持与数据库的活动连接的池化连接之一。尝试使用SqlConnection.ClearAllPools

我在Entity Framework Object Context - AWAITING COMMAND中写了一篇关于类似问题的博客。

于 2009-09-20T19:26:09.723 回答