【问题标题】:How to set EF context initialization through configuration file and seed when needed?需要时如何通过配置文件和种子设置EF上下文初始化?
【发布时间】:2014-07-26 12:27:57
【问题描述】:

我正在使用 Entity Framework 6.1,并希望通过配置文件设置初始化。同时,当配置文件中的设置是删除和(重新)创建数据库的设置时,我想运行种子方法。

除非我弄错了,否则Seed方法只会在通过代码设置初始化程序时被调用。有什么方法可以指定在配置文件(或其他)中运行什么初始化程序,以便在配置文件指定要删除和创建的数据库时运行Seed 方法?

如果没有,还有什么推荐的?

【问题讨论】:

  • 定义当需要时 ..
  • @YuliamChandra 通过编辑澄清了这个问题。
  • 不,您是需要编辑问题以进一步澄清的人。 何时需要是什么意思,取决于配置中的某种参数或您需要进一步解释的任何其他标准..
  • @YuliamChandra 正如我所说,我确实通过编辑澄清了这个问题。
  • 对不起,我没有看到你的变化,我只是回答了问题

标签: entity-framework initialization configuration-files seeding


【解决方案1】:

您可以将其放入DbContext 构造函数中,如下所示。

public class AppContext : DbContext
{
    public AppContext()
    {
        if (ConfigurationManager.AppSettings["Initializer"] == "DropAlways")
        {
            Database.SetInitializer(new DropCreateDatabaseAlways<AppContext>());
        }
        else if (ConfigurationManager.AppSettings["Initializer"] == "DropIfModelChanges")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<AppContext>());
        }
        else
        {
            Database.SetInitializer(new CreateDatabaseIfNotExists<AppContext>());
        }
    }
}

【讨论】:

  • 是的,我怀疑这是这样做的方法。谢谢。
  • @tschmit007,即使我们把它放在构造函数之外,misconfigured 设置仍然会丢弃数据库,这是配置错误而不是编程..
  • @tschmit007,我同意,现在取决于 OP
猜你喜欢
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多