我有一个工作代码第一个实体模型,其中包含模型更改策略:
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.
}
}
我是新手代码,这是我创建的第一个迁移计划。我的问题是:这两种种子方法有什么区别?我应该使用哪一个?
答案 0 :(得分:2)
当且仅当在迁移期间删除并重新创建数据库时,第一种方法才会为数据库设定种子。无论数据库是否被删除和重新创建,第二个选项都会在每次运行迁移时为您的数据库设定种子。就个人而言,我在Configuration.Seed中放置了与环境无关的数据库“常量”。然后,我从不删除并重新创建我们的数据库作为我们部署的一部分(即使在我们的开发环境中)。我希望这会有所帮助。