gpt4 book ai didi

database - "Cannot drop database because it is currently in use"。怎么修?

转载 作者:太空狗 更新时间:2023-10-30 01:37:43 25 4
gpt4 key购买 nike

有了这个简单的代码,我在运行它时得到“无法删除数据库“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 - "Cannot drop database because it is currently in use"。怎么修?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com