2012-07-03 132 views
6

我正在使用实体框架5.0 RC与LocalDB数据库预先配置VS 2012 RC进行一些原型和代码优先数据库测试。重置LocalDB中的EF代码优先数据库

经过几个周期的改变我的代码优先数据库和运行“更新数据库”我做了一个巨大的突破性变化和自动迁移失败。我不在乎解决这个冲突,因为这只是原型设计,所以丢失数据没有问题。

如何重置或删除数据库? 重置还必须重置迁移表,这似乎在Visual Studio中的Server Explorer中隐藏。

+0

我发现了一些关于如何使__MigrationHistory表成为非系统表的文章,这反过来又允许我从Server Explorer中删除所有表和迁移历史记录。不过,这不是一个很快的重置方式,所以我在这里接受创意。我遇到的另一点是不使用自动迁移,我有。启用后,退出迁移错误是一种痛苦,因为没有代码可以查看发生了什么。 – angularsen

+2

您可以通过设置初始化程序'Database.SetInitializer(新AlwaysRecreateDatabase ());' – mfussenegger

+0

重新创建数据库谢谢,是的,我意识到这一点,我想我已经成功地在控制台应用程序中运行该代码只是为了清除所有。仍然在寻找一些对于团队中的每个人来说都更容易做到的事情,以便在数据库需要重置时执行,比如执行SQL脚本。 – angularsen

回答

8

跌落在Visual Studio整个数据库

  1. 打开SQL Server对象资源管理器
  2. 查找您正在使用右键点击使用的数据库,然后选择删除
  3. 选择两个复选框(删除备份和恢复历史记录和关闭现有连接),然后单击确定。
  4. 再次运行程序,它应该重新创建该数据库
+0

自从这个问题已经有一段时间了,但是,这是我目前使用的方法,以及重置数据库。在附注中,我不确定何时发生这种变化,但在我最近的项目中,迁移历史记录表显然不再是系统表。 – angularsen

1

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

  1. 使__MigrationHistory成为非系统表。
  2. 执行SQL脚本删除所有表。

要更改__MigrationHistory表,请参阅this article以处理现有数据库和使用代码优先创建的新数据库。

的SQL脚本如下:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"; 

我使用Database .NET v4 Free运行该SQL脚本,因为我的Visual Studio 11 RC副本不会让我跑的查询上的LocalDB出于某种原因。另外,由于某些外键,我需要运行脚本两次以删除所有表。我并没有打算解决这个问题,因为它似乎工作得很好。

0

我面临着同样的问题,但我发现了一个办法看到的LocalDB istance的__MigrationHistory表,而不是使用服务器资源管理器你应该尝试的SQL Server对象资源管理器,你会发现表在创建的数据库的系统表下。

您可以使用表上的视图数据命令直接输出数据,但您可以毫无问题地查询它。

select * from __MigrationHistory 

因此,您可以将其作为您报告的针对现有迁移的文章进行放置。