2013-02-22 62 views
2

我已经从项目中删除了开发数据库和Migrations文件夹。当使用我的项目开发数据库重新运行单元测试时。我不明白为什么运行更新的数据库给我为什么我无法将Entity Framework迁移到初始状态?

PM> Update-Database 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Applying code-based migrations: [201302201840012_wieleDoWielu]. 
Applying code-based migration: 201302201840012_wieleDoWielu. 

为什么迁移:201302201840012_wieleDoWielu被记住?我如何删除它?存储在哪里?

问候 普热Staniszewski

+0

也许在你的数据库中的表__MigrationHistory?检查'MigrationId'列。你为什么要删除这个呢? – Raxr 2013-02-22 13:45:50

+0

我以这种方式测试该 1.删除迁移夹 2.运行Enable-迁移-EnableAutomaticMigrations -Force该创建的文件夹的迁移 3.删除数据库 4.运行单元测试,创建数据库 5.从删除[DBO] 。[__ MigrationHistory] ​​ 6.运行Add-Migration -IgnoreChanges 并获得7.由于以下显式迁移未决,因此无法生成显式迁移:[201302201810047_InitialCreate,201302201840012_wieleDoWielu]。在尝试生成新的显式迁移之前应用待处理的显式迁移。 – 2013-02-22 14:03:32

+0

在添加迁移之前,您是否尝试过“更新数据库”?它不应该在你的情况下,但每次我有这个错误修复它。 – Judo 2013-02-22 14:16:11

回答

9

这里有一个答案。请恢复迁移文件夹及其迁移文件(恢复到您的项目)。然后按照我的步骤进行操作 http://pawel.sawicz.eu/entity-framework-reseting-migrations/

1)Update-Database -Targetmigration:0 - 它是关键!第一
2)消灭表/迁移(你没有删除整个文件夹)
3)添加迁移初始化
4)更新数据库

+0

我只是做了它从你的文章之前,你写这个答案(谷歌:)它不到风度帮我 – 2013-02-22 14:59:10

+0

更新,数据库后-Targetmigration:0所有表都与__MigrationHistory删除也 – 2013-02-22 15:00:43

+0

不更新,数据库-Targetmigration:0应该删除数据库中的所有表? – 2013-02-22 15:02:57

0

尝试这些命令 Sqllocaldb.exe停止V11.0 Sqllocaldb.exe删除V11.0

这应该删除引用。在执行此操作之前,您可能必须注释掉一些更改,然后在执行迁移之前将更改重新设置为模型。

我是新手,希望我能理解你的问题,因为它听起来像我最近遇到的那个。

一个更持久的解决方案可能是将下面的代码添加到您的Globel文件中,并将其替换为您需要的代码。此文章可以在下方还链接找到:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PersonContext>()); 

http://ilmatte.wordpress.com/2012/12/05/entity-framework-5-code-first-enabling-migrations-in-a-real-project/