Database 实体框架代码第一个迁移类文件

Database 实体框架代码第一个迁移类文件,database,visual-studio,asp.net-mvc-4,entity-framework-5,entity-framework-migrations,Database,Visual Studio,Asp.net Mvc 4,Entity Framework 5,Entity Framework Migrations,我正在使用ASP.NETMVC4和EntityFramework5.0构建一个应用程序。我最近了解了EF Code First迁移工具,您可以在应用程序上为数据库实现该工具。我在PM控制台中运行了“Enable Migration”,它成功地启用了“InitialCreate.cs”,并按照预期创建了“InitialCreate.cs”类,并使用表创建中填充的相应up()和down()方法 然后我继续添加了另一个类(Category.cs),它有两个简单的属性(id、name),并希望将此迁移添

我正在使用ASP.NETMVC4和EntityFramework5.0构建一个应用程序。我最近了解了EF Code First迁移工具,您可以在应用程序上为数据库实现该工具。我在PM控制台中运行了“Enable Migration”,它成功地启用了“InitialCreate.cs”,并按照预期创建了“InitialCreate.cs”类,并使用表创建中填充的相应up()和down()方法

然后我继续添加了另一个类(Category.cs),它有两个简单的属性(id、name),并希望将此迁移添加到数据库中。我在PM中运行了“添加迁移AddCategoryClass”以获得以下消息:

Scaffolding migration 'AddCategoryClass'.
The Designer Code for this migration file includes a snapshot of your current Code
First model. This snapshot is used to calculate the changes to your model when you    scaffold the next migration. If you make additional changes to your model that you want to    include in this migration, then you can re-scaffold it by running 'Add-Migration 201307301938256_AddCategoryClass' again.
它在Migrations文件夹中创建了迁移文件,但当我打开它创建的“.cs”文件时,up()和Down()方法为空。我希望它创建一个表并分别添加字段。出于好奇,我运行了“更新数据库”,并成功地完成了(在Configuration.cs文件中更改AutomaticMigration=true之后)。当我构建应用程序时,表出现在数据库中

所以我的问题是-->为什么Up()和Down()方法是空的

对于记录,如果Configuration.cs文件中的automicmigrations=false,“更新数据库”命令不起作用;给我以下错误:

Unable to update database to match the current model because there are pending changes     and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
我认为这些都不应该,将来看看我的迁移,看看我做了些什么,这会很有帮助。任何帮助或指导都会很好。提前谢谢你


我在Win 7 64位上使用VS 2012。

这可能是因为您有一个数据库初始值设定项,它始终保持数据库与模型同步,而不考虑迁移

查看一下
\uu MigrationHistory
,您可能会看到模式已由更新。
MigrationId
类似于
201307290913337\u自动迁移

要修复此问题,请删除数据库,注释掉对模型的更改,运行
更新数据库
-现在注释更改,然后再次添加迁移

如果
\uu MigrationHistory
表的最后一条记录确实是
xxxxxxx\u自动迁移
记录,您只需删除它并再次运行
Add Migration
,您的迁移类在其
Up
Down
方法中应该有一些有用的内容


您应该确保在尚未进行更改时运行
Add Migration

是否有一个或两个迁移文件(configuration.cs除外)?现在它显示两个,InitialCreate和AddCategoryClass。但是第二个方法在您的配置类中有空白的方法sis
AutomaticMigrationsEnabled=true
?目前没有,但当我将其设置为true时,它允许我执行“更新数据库”,但Up()和Down()方法仍然是空白的是,我确实有一个数据库初始化,如下所示:Database.SetInitializer(new DropCreateDatabaseIfModelChanges());您能告诉我迁移历史记录表的位置吗?我在“迁移”文件夹中或数据库中都看不到它。但我确实理解您的意思。我需要以不同的方式初始化数据库,还是让它正确使用自动迁移?抱歉,我找到了。它没有显示在VS的服务器资源管理器中,但我知道吗n SQL管理工作室。我将尝试一下,并让您知道。