直到昨天,我还有一个完美的工作数据库,带有种子测试数据。 然后我跑了很长时间的“更新包”。它几乎更新了每个ASP包。
我删除了数据库并重新创建了它,测试数据是通过Seed方法完美创建的。 到目前为止一切都很好。
现在,当我尝试以任何方式访问数据库时,就像这样
public ActionResult Index()
{
return View(db.Games.ToList());
}
我在db.Games.ToList()上得到了这个错误:
EntityFramework.dll中发生了'System.Data.SqlClient.SqlException'类型的异常但未在用户代码中处理
其他信息:无法删除数据库“DataBaseName”,因为它当前正在使用中。
显然,“系统”没有理由认为我想要删除数据库。这只是一个选择查询。就像我说的,这发生在任何数据库查询上。
当然我可以撤消整个“更新包”,但实际上这不是我想要做的。
这是一个错误吗?我错过了什么吗?
非常感谢!
答案 0 :(得分:0)
我发现了问题,它是EntityFramework包。 我从6.0.0升级到6.1.1并收到错误
类型' System.Data.SqlClient.SqlException'的异常发生在 EntityFramework.dll但未在用户代码中处理
其他信息:无法删除数据库“DataBaseName”,因为它 目前正在使用中。
当我从6.0.0升级到6.0.1时,更新步骤更小,错误更具体(和不同)
类型' System.InvalidOperationException'的例外情况发生在 EntityFramework.dll但未在用户代码中处理
其他信息:DropCreateDatabaseAlways初始化程序 不删除或创建数据库支持上下文' ApplicationDbContext' 因为为上下文启用了迁移。使用迁移到 管理此上下文的数据库,例如通过运行 '更新,数据库'来自程序包管理器控制台的命令。
EF出现问题,因为我使用了DropCreateDatabase Initializer和迁移。 看起来从版本6.0.1开始,EF不再那样了(我知道它无论如何都没用)。
然而,我不明白他们为什么在以后的版本中更改了这个错误......