我正在使用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再次运行应用程序(未附加到调试器),那么我看到我的数据库已创建,迁移运行但种子方法永远不会被调用。
当然这不是设计上的?有什么想法吗?
答案 0 :(得分:1)
我的不好,这是由于我们的代码在初始化之前尝试从上下文中读取 - 但仅在未在调试模式下运行时才会引起。
EF确实按预期运行 - 在执行迁移后调用种子方法。