有了这段简单的代码,我在运行数据库test_db时得到"无法删除数据库"test_db"因为它当前正在使用"(Cleanup方法).

[TestFixture]
public class ClientRepositoryTest
{
    private const string CONNECTION_STRING = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True";
    private DataContext _dataCntx;

    [SetUp]
    public void Init()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>());
        _dataCntx = new DataContext(CONNECTION_STRING);
        _dataCntx.Database.Initialize(true);
    }

    [TearDown]
    public void CleanUp()
    {
        _dataCntx.Dispose();
        Database.Delete(CONNECTION_STRING);
    }
}

DataContext有一个这样的属性

 public DbSet<Client> Clients { get; set; }

如何强制我的代码删除数据库? 谢谢

推荐答案

问题是,您的应用程序可能仍然保持与数据库的某些连接(或者另一个应用程序也保持连接).如果存在任何其他打开的连接,则无法删除数据库.第一个问题可能可以通过关闭连接池(在连接字符串中添加Pooling=false)或在删除数据库之前清除池(通过调用SqlConnection.ClearAllPools())来解决.

这两个问题都可以通过强制数据库删除来解决,但是要做到这一点,您需要自定义数据库初始值设定项,在该初始值设定项中,您可以将数据库切换到单用户模式,然后将其删除.Here就是如何实现这一点的一些例子.

Database相关问答推荐

在多组MongoDB中查找最新文档的有效方法

当某些 node 死亡时,mongo 副本集选举如何表现?

聚合以过滤 MongoDB 中的引用

在 PostgreSQL 的数组列中查找字符串

在sql server中拆分字符串

MySQL 语法 LIMIT x, y 的 T-SQL 类似的功能是什么?

用于存储年份的 MySQL 类型:Smallint 或 Varchar 或 Date?

我可以为 dapper-dot-net 映射指定数据库列名称吗?

向表中添加大量索引是否有缺点?

将 XML 存储在数据库中是否不好?

SqlAlchemy 中的动态表创建和 ORM 映射

审计表:一个表或一个表的每个字段

friendship数据库模式

Hibernate 的 MariaDB 方言类名称是什么?

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

如何在实体-属性-值设计中处理不同的数据类型(例如,具有多列的单个表或每种数据类型的多个表)?

不带 WHERE 子句的 UPDATE 查询

如何在 DynamoDB 中创建 UUID?

谁有维基数据库?

Android - ViewHolder 模式是否在 CursorAdapter 中自动实现?