gpt4 book ai didi

entity-framework - 在 Entity Framework Code First 中删除 localdb

转载 作者:行者123 更新时间:2023-12-02 05:14:23 24 4
gpt4 key购买 nike

我正在使用 NUnit 和 Entity Framework 编写一些单元测试。如何从 Entity Framework 级别删除整个 localdb 数据库?

注意:我不想清除表格的数据。我想删除整个数据库。

如果数据库尚未创建,我还可以在我的应用程序工作目录中创建一个 localdb 文件:

string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");
var testDbFileName = String.Format(@"UnitTestDB.mdf");
var testDbFileNameWithPath = path + @"\" + testDbFileName;

var connectionString =
String.Format(
@"Data Source=(localdb)\V11.0;Initial Catalog={0};Integrated Security=True;AttachDBFilename={1};MultipleActiveResultSets=True",
"UnitTestDB", testDbFileNameWithPath);

//Here would be the code passing connection string to DbContext and so on..

仅删除文件“UnitTestDB.mdf”是不够的。在 SQL Management Studio 中仍然有对数据库的引用

最佳答案

在代码中有两种方法可以做到这一点。如果可以的话,首先坚持使用 EF 代码 :-)

1) EF 有一个很好的上下文选项。

 Context.Database.Delete()

2) 如果你想要老派的 SQLCommand/SqlConnection 方法,比如这个 hack routine...

 public  bool DropDB(string DBName, string ConnectionString)
{

SqlConnection conn = null;
SqlCommand cmd = null;
string stmt = null;

int rowCount = 0;

if (string.IsNullOrEmpty(DBName))
throw new ArgumentNullException(DBName, "DBName required");

try
{
conn = new SqlConnection(ConnectionString);

stmt = "DROP DATABASE " + DBName ;

cmd = new SqlCommand(stmt, conn);
conn.Open();
rowCount = cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception)
{
//todo whatever
throw;
}
finally
{
if (conn != null) conn.Dispose();
if (cmd != null) conn.Dispose();
}
if (rowCount == -1) return true;
return false;
}

关于entity-framework - 在 Entity Framework Code First 中删除 localdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893998/

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