0

我正在使用实体框架(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(未附加到调试器)再次运行应用程序,那么我会看到我的数据库已创建,迁移运行,但种子方法永远不会被调用。

这确定不是设计的吗?有任何想法吗?

4

1 回答 1

1

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

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

于 2012-04-25T11:20:35.910 回答