C# 在LocalDB中重置EF代码第一个数据库

C# 在LocalDB中重置EF代码第一个数据库,c#,entity-framework,ef-code-first,reset,localdb,C#,Entity Framework,Ef Code First,Reset,Localdb,我正在使用Entity Framework 5.0 RC和LocalDB数据库,该数据库是用VS 2012 RC预先配置的,用于代码优先数据库的一些原型设计和测试 在更改代码优先数据库并运行“更新数据库”的几个周期后,我做了一个巨大的突破性更改,自动迁移失败了。我不关心解决这个冲突,因为这只是原型,所以丢失数据是可以的 如何重置或删除数据库? 重置还必须重置迁移表,该表似乎对Visual Studio中的服务器资源管理器隐藏。到目前为止,这是我找到的最好的方法 将迁移历史记录设为非系统表 执行S

我正在使用Entity Framework 5.0 RC和LocalDB数据库,该数据库是用VS 2012 RC预先配置的,用于代码优先数据库的一些原型设计和测试

在更改代码优先数据库并运行“更新数据库”的几个周期后,我做了一个巨大的突破性更改,自动迁移失败了。我不关心解决这个冲突,因为这只是原型,所以丢失数据是可以的

如何重置或删除数据库?
重置还必须重置迁移表,该表似乎对Visual Studio中的服务器资源管理器隐藏。

到目前为止,这是我找到的最好的方法

  • 将迁移历史记录设为非系统表
  • 执行SQL脚本以删除所有表
  • 要更改_umigrationhistory表,请参阅先处理现有数据库和使用代码创建的新数据库

    SQL脚本如下所示:

    EXEC sp_MSforeachtable @command1 = "DROP TABLE ?";
    

    我正在使用运行此SQL脚本,因为出于某种原因,我的Visual Studio 11 RC副本不允许我在LocalDB上运行查询。此外,我还需要运行两次脚本,以便它由于某些外键而删除所有表。我没有费心去修复它,因为它看起来已经足够好了。

    在Visual Studio中删除整个数据库

  • 打开SQL Server对象资源管理器
  • 找到您正在使用的数据库,单击鼠标右键,然后选择“删除”
  • 选中两个复选框(删除备份和还原历史记录,并关闭现有连接),然后单击“确定”
  • 再次运行程序,它将重新创建dabase

  • 我找到了一些关于如何使_MigrationHistory表成为非系统表的文章,这反过来又允许我从服务器资源管理器中删除所有表和迁移历史。不过,这不是一个很快的重置方法,所以我对这里的想法持开放态度。我遇到的另一个问题是,我没有使用自动迁移。启用时,退出迁移错误是一件痛苦的事情,因为没有代码来查看发生了什么。您可以通过设置初始值设定项
    database.SetInitializer(new AlwaysRecreateDatabase())来重新创建数据库谢谢,是的,我知道这一点,我想我已经成功地在控制台应用程序中运行了该代码,只是为了清除所有内容。仍然在寻找在需要重置数据库时对团队中的每个人都更容易执行的方法,例如要执行的SQL脚本。从这个问题开始已经有一段时间了,但是是的,这也是我目前用来重置数据库的方法。另一方面,我不确定这是什么时候改变的,但在我最近的项目中,迁移历史表显然不再是一个系统表。