如何删除并从头现有的EF代码优先数据库重建(How to delete and recreate f

2019-08-31 07:28发布

我使用EF代码第一次在2012年VS EF 5我用PM update-database命令,我有一个简单的种子的方法来填补某些表有样本数据。

我想删除并重新创建我的x.mdb。 更新历史似乎是不同步的。 如果我在上下文中注释掉我所有的DBSets, update-database ,并没有错误运行,但树叶在DB一些表。 正如我在DB没有有价值的数据似乎最简单的重置所有的事情。

我怎样才能做到这一点?

Answer 1:

如果我的理解是正确的?

如果你想start clean

1) 手动删除你的数据库 -无论它是(我假设你有你的连接进行排序),或清空,但更容易/更安全的是删除它一起-因为有system __MigrationHistory表-你需要删除了。

2) 删除所有migration files -这是下Migrations -并命名为相同的数字等等-将它们全部删除,

3) 重建包含迁移项目 (其余的) -并确保您的项目设置(配置)自动建立(有时可能会产生问题-但不太可能给你),

4)运行Add-Migration Initial再-再Update-Database



Answer 2:

如果你工作的正确方法使用命令来创建迁移Add-Migration "Name_Of_Migration"那么你可以做下面的得到一个干净的启动 (重置, 丢失数据,当然 ):

  1. Update-database -TargetMigration:0

    通常情况下你的数据库是空的,因为现在是执行下来的方法。

  2. Update-database

    这将重新创建你的数据库,以你目前的迁移



Answer 3:

单排下降,创建并从程序包管理器控制台的后裔。

update-database -TargetMigration:0 | update-database -force

KABOOM。



Answer 4:

对于EntityFrameworkCore您可以使用以下命令:

Update-Database -Migration 0

这会从数据库中删除所有迁移。 然后你可以使用:

Remove-Migration

要删除您的迁移。 最后,您可以重新迁移,并将其应用到数据库中。

Add-Migration Initialize
Update-Database

测试在EFCore V2.1.0



Answer 5:

怎么样 ..

static void Main(string[] args)
{
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());  
    // C
    // o
    // d
    // i
    // n
    // g
}

我从就捡起的Code First:编程实体框架 ,第28页第一版。



Answer 6:

如果您创建数据库下面这个教程: https://msdn.microsoft.com/en-au/data/jj193542.aspx

......那么这可能工作:

  1. 删除所有.mdf.ldf在项目目录中的文件
  2. 去查看/ SQL Server的对象资源管理器,并从(的LocalDB)\ 11.0子节点删除数据库。 又见https://stackoverflow.com/a/15832184/2279059


Answer 7:

采取以下步骤:

  1. 删除应当从上下文//删除那些对象Dbset<Item> Items{get;set;}和在的NuGet控制台运行这些命令
  2. 添加迁移[CONTEXTNAME]
  3. 更新数据库-verbose

它会删除表(S),在上下文不存在的,但在数据库中已创建



文章来源: How to delete and recreate from scratch an existing EF Code First database