我正在使用带有 Entity Framework 5.0 的 ASP.NET MVC 4 构建一个应用程序。我最近了解了 EF Code-First Migrations 工具,您可以在应用程序上为您的数据库实施该工具。我在 PM 控制台中运行了“Enable-Migration”,它成功启用并按预期创建了“InitialCreate.cs”类,并使用填入表创建的相应 up() 和 down() 方法。
然后我继续添加另一个类 (Category.cs),它具有 2 个简单属性(id、name),并希望将此迁移添加到数据库中。我在我的 PM 中运行了“Add-Migration 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() 方法是空白的。我期待它创建一个表并分别添加字段。出于好奇,我运行“Update-Database”并成功通过(在 Configuration.cs 文件中更改 AutomaticMigration = true 之后)。当我构建我的应用程序时,该表出现在数据库中。
所以我的问题是 --> 为什么 Up() 和 Down() 方法是空白的?
作为记录,如果 Configuration.cs 文件中的 AutomaicMigrations = false,则“Update-Database”命令不起作用;给我以下错误:
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。