我应该在 DropCreateDatabaseIfModelChanges 或 DbMigrationsConfiguration 中播种数据库吗?
Should I seed DB in DropCreateDatabaseIfModelChanges or in DbMigrationsConfiguration?
我有一个工作代码优先的实体模型,其中包含模型更改策略:
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.
}
}
我是第一次接触代码,这是我创建的第一个迁移计划。我的问题是:这两种种子方法有什么区别?我应该使用哪一个?
当且仅当数据库在迁移过程中被删除并重新创建时,第一种方法才会为您的数据库设置种子。第二个选项将在每次迁移 运行 时为您的数据库播种,无论数据库是否被删除并重新创建。就个人而言,我将与环境无关的数据库 "constants" 放在 Configuration.Seed 中。再一次,我 从不 删除并重新创建我们的数据库作为我们部署的一部分(即使在我们的开发环境中)。希望对您有所帮助。
我有一个工作代码优先的实体模型,其中包含模型更改策略:
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.
}
}
我是第一次接触代码,这是我创建的第一个迁移计划。我的问题是:这两种种子方法有什么区别?我应该使用哪一个?
当且仅当数据库在迁移过程中被删除并重新创建时,第一种方法才会为您的数据库设置种子。第二个选项将在每次迁移 运行 时为您的数据库播种,无论数据库是否被删除并重新创建。就个人而言,我将与环境无关的数据库 "constants" 放在 Configuration.Seed 中。再一次,我 从不 删除并重新创建我们的数据库作为我们部署的一部分(即使在我们的开发环境中)。希望对您有所帮助。