gpt4 book ai didi

c# - 我应该在 DropCreateDatabaseIfModelChanges 或 DbMigrationsConfiguration 中播种数据库吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:02 26 4
gpt4 key购买 nike

我有一个有效的代码优先实体模型,其中包含模型更改策略:

public class MyModelChangePolicy : DropCreateDatabaseIfModelChanges<MyDBContext>
{
protected override void Seed(MyDBContext context)
{
//Add the enumeration type values
context.SyncEnums(false);
base.Seed(context);
}
}

SyncEnums 是我创建的一种扩展方法,它将数据加载到多个枚举类型的表中。

现在我正在努力将代码优先迁移添加到我的项目中。我正在使用 this guide over at MSDN . Configuration.cs 已添加到 Migrations 文件夹下。但它也有一个 Seed 方法。这是自动生成的代码:

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

protected override void Seed(MyDBContext context)
{
// This method will be called after migrating to the latest version.
}
}

我是代码优先的新手,这是我创建的第一个迁移计划。我的问题是:这两种种子方法有什么区别?我应该使用哪一个?

最佳答案

当且仅当数据库在迁移过程中被删除并重新创建时,第一种方法才会为您的数据库设置种子。第二个选项将在每次运行迁移时为您的数据库播种,无论数据库是否被删除并重新创建。就个人而言,我将与环境无关的数据库“常量”放在 Configuration.Seed 中。再一次,我从不在部署过程中删除并重新创建我们的数据库(即使是在我们的开发环境中)。我希望这会有所帮助。

关于c# - 我应该在 DropCreateDatabaseIfModelChanges 或 DbMigrationsConfiguration 中播种数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511570/

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