如何在播种前强制重置数据库

时间:2016-10-17 09:05:03

标签: c# sql-server entity-framework sql-server-2012 ef-code-first

我正在开发一个实用程序,它将数据从一个结构传输到另一个数据结构,然后存储在由Entity-Framework控制的SQl Server数据库中。

每次我更改目标数据库模型时,我都会执行以下操作;

  1. 从目标数据库中删除数据。
  2. 运行" dbcc checkident(" table",reseed)"在每个表(许多表)上重置ID值。
  3. 使用" update-database"
  4. 重新种植数据库

    阅读以下http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx后,我认为我有两种选择。我不认为我想推出自己的初始化程序。

    第一个选项是在开发期间使用其中一个drop create策略,(dropCreateifmodelChanges或DropCreateAlways)Drop Drop进程是否会删除现有的目标数据,并重新设置Identity计数器?

    第二个选项是以某种方式包括删除,以及种子功能中的ID重置。可以这样做吗?如果是这样 - 怎么样?

    有更好的选择吗?有没有人有任何建议?

1 个答案:

答案 0 :(得分:1)

我也有同样的情况,我选择了你提到的手动方法.B'因为它让我对自动方法有了更多的控制。

但是,如果您愿意,可以使用 DropCreateDatabaseAlways 策略。是的,它会创建新的数据库。这意味着将重新接种所有PK值。您只能在& #39;在开发环境中重新开发应用程序。