首页 > 解决方案 > EF 在测试之间删除数据库

问题描述

我正在使用 Specflow 为我的 UI 编写测试。一些测试改变了我的数据库,所以我不能重新运行一些测试。当我使用 EF 时,我决定简单地删除我的数据库(因为 EF 将创建新数据库并为其播种)。当我运行我的测试时,我的 MVC 项目是打开的。我尝试使用以下代码删除我的数据库:

[BeforeFeature]
public static void DropDatabase()
{
    Database.Delete("SampleDbName");
}

但问题是我无法删除数据库,因为它当前正在使用中。然后我尝试了两种解决方案:

  1. 将 Pooling = false 添加到我的连接字符串

  2. 调用 SqlConnection.ClearAllPools(); 在删除我的数据库之前

这两种情况都对我不起作用,因为每次我尝试访问我的数据库时都会出现“无法将文件 .mdf 作为数据库附加”错误(这发生在我的数据库被删除之后)。
我的目标是在不重新启动 MVC 项目的情况下使我的测试可重新运行。有一些解决方案可以解决这个问题吗?

标签: c#specflow

解决方案


推荐阅读