gpt4 book ai didi

c# - 浏览 Entity Framework 迁移选项

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

我正在尝试找出在我的生产环境中迁移我的数据库的最佳方法,但我认为我对一些术语感到困惑。

我有一个名为“迁移”的类,用于为我的数据库播种。它的构造函数如下所示(我的 DbContext 称为 SiteDatabase):

internal sealed class Migration : DbMigrationsConfiguration<SiteDatabase>
{
public Migration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
  1. AutomaticMigrationsEnabled 在这里做什么?这是我启用自动迁移的方式吗?

在我的“Application_Start()”方法中,我看到添加了以下项目:

protected void Application_Start()
{
new DbMigrator(new Migration()).Update();

// Option 1
Database.SetInitializer(new MigrateDatabaseToLatestVersion<SiteDatabase, Migration>());

// Option 2
Database.SetInitializer(new DropCreateDatabaseAlways<SiteDatabase>());
}
  1. 这些是唯一可用的选项吗?
  2. 这与 Migration 类中的 AutomaticMigrationsEnabled 有什么关系?

在包管理器控制台中,我知道以下命令:

> update-database
> add-migration
  1. update-database 与 AutomaticMigrationsEnabled 有何关系?还需要吗?当您创建一个新的 DbMigrator 时怎么办?
  2. 如果我使用 add-migration 创建迁移,命名它们的好方法是什么?我知道它们会自动使用时间戳命名,但它还需要附加一个额外的字符串。
  3. 有没有办法控制添加迁移生成的文件的命名方式?

最佳答案

What does the AutomaticMigrationsEnabled do here? Is this how I enabled Automatic Migrations?

显然:是的。这样做的效果是您不必在调用 update-database 之前执行 add-migration:它会为您生成一个只有名称时间戳的迁移。您将无法在迁移文件夹中找到此迁移。

Are these the only options available?

不,there are more例如 CreateDatabaseIfNotExistsDropCreateDatabaseWhenModelChangesDropCreateDatabaseAlways 以及您自己创建的自定义项。

How does this relate to the AutomaticMigrationsEnabled that in the Migration class?

自动迁移确保您不再需要自己执行,从而使表的迁移过程更加轻松。数据库初始化程序决定如何处理数据库本身。它们是截然不同的方面,但在它们都在您的数据库上工作的方式上相互关联。

How does update-database relate to AutomaticMigrationsEnabled? Is it still required? What about when you create a new DbMigrator?

见上文:您基本上不必再调用 add-migration

If I create migrations using add-migration, what is a good method for naming them?

我不知道有任何指南,但我只是总结了更改的内容。例如“添加用户模型地址”为我的用户添加地址字段。这真的取决于您来决定什么最有效。

Is there a way of controlling how the files generated with add-migration are named?

我不知道有这样的选项。

关于c# - 浏览 Entity Framework 迁移选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29544891/

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