代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

使ADO.NET(和EntityFramework)释放数据库

  •  2
  • Pablo Fernandez  · 技术社区  · 15 年前

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

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

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

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

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

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

    1 回复  |  直到 15 年前
        1
  •  5
  •   Pablo Fernandez    15 年前

    您可能需要显式关闭所有连接,我认为该连接正在被池化,并且它是池化连接中的一个,仍然保持与DB的活动连接。试用 SqlConnection.ClearAllPools

    我在博客上写了一个类似的问题 Entity Framework Object Context - AWAITING COMMAND .