我正在运行集成测试。在开始测试之前,我删除了数据库并再次创建它。第一次测试成功。但是在第二次测试开始时我得到一个例外:
SetUp:System.Data.SqlClient.SqlException:无法删除数据库“Test”,因为它当前正在使用中。
Сode:
[TestFixture]
class Class1
{
public SqlConnection Repository;
[SetUp]
public void LocInit()
{
Repository = new SqlConnection(@"Data Source=.\SQLEXPRESS; Integrated Security=true;");
Repository.Open();
Repository.Execute("USE master;");
Repository.Execute("DROP DATABASE Test;");
Repository.Execute("USE master; CREATE DATABASE Test;");
Repository.Execute("USE Test;");
}
[Test]
public void Test1()
{
using (var repository = new SqlConnection(@"Data Source=.\SQLEXPRESS; Integrated Security=true;"))
repository.Execute("USE Test; SELECT 10");
}
[Test]
public void Test2()
{
using (var repository = new SqlConnection(@"Data Source=.\SQLEXPRESS; Integrated Security=true;"))
repository.Execute("USE Test; SELECT 10");
}
[TearDown]
public void LocalTearDown()
{
Repository.Dispose();
}
}
为什么我会得到这个例外?
我自己没试过,但也许你可以试试这个:
在连接字符串中设置Pooling = false
要么
删除数据库之前清除池:SqlConnection.ClearAllPools()