EF迁移 - 种子仅在连接到调试器时执行

时间:2012-04-23 16:05:59

标签: c# entity-framework entity-framework-4.1

我正在使用Entity Framework(4.3)迁移。我有一个正常的配置类,它定义了一个Seed方法,它应该在迁移后调用以添加数据:

internal sealed class SettingsConfig : DbMigrationsConfiguration<My.Assembly>
{
    public SettingsConfig()
    {
        AutomaticMigrationsEnabled = false;
    }

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

我正在运行SQL Server探查器以查看数据库发生了什么。

现在,如果我删除数据库,并使用F5(连接到调试器)从Visual Studio运行此应用程序,它就会运行,我可以看到数据库已创建,迁移运行,种子方法被调用并添加数据到数据库

如果我然后删除我的数据库,并使用Ctrl-F5再次运行应用程序(未附加到调试器),那么我看到我的数据库已创建,迁移运行但种子方法永远不会被调用。

当然这不是设计上的?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我的不好,这是由于我们的代码在初始化之前尝试从上下文中读取 - 但仅在未在调试模式下运行时才会引起。

EF确实按预期运行 - 在执行迁移后调用种子方法。