我正在尝试使用 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/