entity-framework - 首先删除 Entity Framework 代码中的localdb

标签 entity-framework ef-code-first code-first localdb

我正在使用 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 中仍然有对 db 的引用

最佳答案

有两种方法可以在代码中执行此操作。如果可以的话,首先坚持使用 EF 代码:-)

1) EF 在上下文方面有一个不错的选项。

 Context.Database.Delete()

2)如果你想要老式的 SQLCommand/SqlConnection 方法,比如这个黑客例程......

 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 代码中的localdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893998/

相关文章:

c# - 在 Entity Framework 中存储多类型值的最佳方式

c# - EF Core 继承问题(HasDiscriminator)

c# - 团队环境 Entity Framework 代码优先 - 仅删除 _MigrationHistory 表以将模型项目重新同步到数据库是否合适?

ef-code-first - 首先使用实体​​框架代码在两个实体之间创建 2 个关系

entity-framework - EF 4.1 RTM-EntityTypeConfiguration

c# - 由外键 ef 4.3 组成的代码优先组合键

c# - Entity Framework Multi-Tenancy 共享数据架构 : single column, 多个外键

c# - 从 Dapper 连接但从 EF 6 工作的神秘身份验证错误 - 相同的 ConnectionString

c# - 更新 Entity Framework 7 中的继承实体

sql - 为什么单独实例化的 Func<T,bool> 谓词不使用 Entity Framework 转换为 SQL?