gpt4 book ai didi

database - Entity Framework 代码优先迁移类文件

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:02 24 4
gpt4 key购买 nike

我正在构建一个使用 ASP.NET MVC 4 和 Entity Framework 5.0 的应用程序。我最近了解了 EF Code-First Migrations 工具,您可以在您的数据库应用程序上实现该工具。我在 PM 控制台中运行“Enable-Migration”,它成功启用并按预期创建了“InitialCreate.cs”类,并使用适当的 up() 和 down() 方法填充了表创建。

然后我继续添加另一个具有 2 个简单属性(id、名称)的类 (Category.cs),并希望将此迁移添加到数据库中。我在我的 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() 方法是空白的。我期待它创建一个表并分别添加字段。出于好奇,我运行了“更新数据库”并且它成功通过了(在 Configuration.cs 文件中更改 AutomaticMigration = true 之后)。当我构建我的应用程序时,该表出现在数据库中。

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

请注意,如果 Configuration.cs 文件中的 AutomaicMigrations = 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。

最佳答案

这可能是因为您有一个数据库初始化程序,它始终使数据库与模型保持同步,无论迁移如何。

查看 __MigrationHistory,您可能会看到架构已由 MigrateDatabaseToLatestVersion initializer 更新。 . MigrationId 类似于 201307290913337_AutomaticMigration

要修复它,删除数据库,注释掉对模型的更改,运行 Update-Database - 现在注释更改,然后再次添加迁移。

如果__MigrationHistory表的最后一条记录确实是xxxxxxx_AutomaticMigration一条,你可以删除它并再次运行Add-Migration,并且您的迁移类在其 UpDown 方法中应该有一些有用的东西。

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

关于database - Entity Framework 代码优先迁移类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com