gpt4 book ai didi

entity-framework - EF : Automatic migrations are running when disabled

转载 作者:行者123 更新时间:2023-12-04 04:18:10 25 4
gpt4 key购买 nike

我正在尝试更新构建服务器上的数据库,但是它失败了,因为它试图运行自动迁移,即使它们已被禁用。该数据库已经存在,我只需要应用最新的迁移。这是我的上下文:

public sealed class Configuration : DbMigrationsConfiguration<CableSenseInstanceConfiguratorContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
}

我有一堆手动创建的迁移文件,这是最新的文件:
public partial class Settings : DbMigration
{
public override void Up()
{
AddColumn("dbo.MasterInstances", "Settings", c => c.String());
}

public override void Down()
{
DropColumn("dbo.MasterInstances", "Settings");
}
}

然后,如果我从程序包管理器控制台手动更新数据库,则会看到它尝试运行自动迁移(由于该表已存在,因此将失败):
Applying code-based migrations: [201204200805145_NoMoreCerts, 201210311451543_SuperUsers, 201301041036414_Settings, 201301041128583_Settings2].
Applying code-based migration: 201204200805145_NoMoreCerts.
Applying automatic migration: 201204200805145_NoMoreCerts_AutomaticMigration.

我的__MigrationHistory表仅包含一个用于初始创建的条目。如何阻止它进行自动迁移?

最佳答案

在这里查看jjslagace的答案:

Update-Database tries to do an automatic migration even with automatic migrations disabled

您正在手动构建迁移。我的猜测是, Entity Framework 想要添加迁移脚本中没有的东西,或者想要以不同的方式命名列等。EF有一个头脑,那个头脑很简单。除非您使用流畅的来告诉它(除非通过手动创建/调整迁移文件),否则期望事情以某种方式进行。从上述问题的答案看来,有时会导致您所看到的问题。

长话短说,不要手动构建迁移文件。而是运行add-migrations命令。这将为您创建迁移,您可以在将EF应用于数据库之前查看EF的预期操作(因为有时这很愚蠢)。如果需要覆盖EF生成的内容,则可以通过覆盖OnModelCreating在DBContext类中添加流利的映射。然后只需使用-force选项再次运行add-migration。 Here is a good reference for using the Fluent API可以优化EF映射。漂洗并重复直到获得所需的迁移,然后再寻找,然后运行update-database。

希望对您有所帮助!

关于entity-framework - EF : Automatic migrations are running when disabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193050/

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