何时在EF代码首次迁移方案中调用Seed方法?

时间:2014-06-10 13:19:21

标签: entity-framework entity-framework-6

我是项目的新成员,种子数据有这个类:

 internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

这个代码启动种子:

protected override void Seed(Context context)
    {
        try
        {

我的问题是:何时调用Seed方法?仅当用户执行update-database并且用户没有数据库(基本上是新用户)时,或者当具有现有数据库的用户调用update-database时?

2 个答案:

答案 0 :(得分:20)

对于来自Seed()类的迁移DbMigrationsConfiguration方法,每次执行Update-Database命令时都会调用它。当用户调用它有现有数据库时。

还有另一个Seed()方法 - 它是一个数据库初始化程序。它在数据库创建时调用,并且不处理现有数据(来自DbMigrationsConfiguration的种子处理它们,检查是否存在指定的实体)。

很高兴查看One Unicorn blog以获取更多信息。

答案 1 :(得分:13)

种子方法用于使用一些起始数据初始化数据库表。每当您运行迁移并更新数据库时,它将运行种子方法。大多数情况下,它在测试阶段使用,您通常需要重新创建数据库并使用示例数据填充数据库表。请仔细阅读此链接http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/以获取有关代码的更多说明。