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

using (var dbContext = container.Resolve<ApplicationDbContext>())
    {
      dbContext.Database.Delete();
    }

根据msdn,这应该起作用,但是什么也没有发生。

dbContext使用ContainerControlledLifetimeManager注册,并且应该与用于创建数据库的实例相同。

最佳答案

添加,更新和删除实体类型的实例需要dbContext.SaveChanges()来反射(reflect)更改。

但是dbContext.Database.Delete()不需要dbContext.SaveChanges()

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

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

使用此代码段进行测试:

using (var dbContext = new dbContext())
{
    dbContext.Database.Delete();
}

关于c# - 使用 Entity Framework 删除数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27314509/

10-17 00:12