使用实体框架删除数据库

mem*_*eam 5 c# database entity-framework

我正在尝试使用实体框架从我的应用程序中删除数据库。我使用的代码如下:

using (var dbContext = container.Resolve<ApplicationDbContext>())
    {
      dbContext.Database.Delete();
    }
Run Code Online (Sandbox Code Playgroud)

根据msdn,这应该有效,但没有任何反应。

dbContext 是使用注册的,ContainerControlledLifetimeManager并且应该是用于创建 DB 的相同实例。

asd*_*hak 3

添加、更新和删除实体类型的实例需要 dbContext.SaveChanges()反映更改。

不过 dbContext.Database.Delete()不需要dbContext.SaveChanges()

如果您打开例如从 Sql Management Studio 到数据库的连接,然后尝试然后dbContext.Database.Delete()收到“Cannot drop database "dbContext" because it is currently in use.如果重新启动 sql 服务器,则删除这些连接,然后重试dbContext.Database.Delete()成功删除数据库”。

最后一件事是 刷新 Sql Management Studio 中的数据库列表,以查看该数据库不再存在。

使用此代码片段进行测试:

using (var dbContext = new dbContext())
{
    dbContext.Database.Delete();
}
Run Code Online (Sandbox Code Playgroud)