强制EF 6首先创建具有模型的表

时间:2014-01-06 16:46:29

标签: c# database entity-framework-6 ef-model-first

目前我有一个很好的模型,我可以根据它生成一个数据库,但据我所知,这些表永远不会被创建(导致各种有趣的运行时错误)。

我的理解是,首先有三个代码选项可以强制EF为我创建表格:

  • DropCreateDatabaseAlways
  • CreateDatabaseIfNotExists
  • DropCreateDatabaseIfModelChanges

如果我先做模型,我该如何使用这些?

此外,这是一个预期的错误,还是当我第一次从模型中选择生成数据库时,这应该是自动发生的?

修改:我试过调用

            context.Database.Initialize(true);
            context.Database.CreateIfNotExists();

并没有任何变化。

1 个答案:

答案 0 :(得分:2)

这也很好 tutorial

但如果您在第一次访问dbContext时使模型良好,则应该通过您可以设置的db策略创建db:Database.SetInitializer() set initializer

在创建模型后,您需要创建继承自DbContext的类:

 public class CompanyContext : DbContext
{
    public CompanyContext() : base("CompanyDatabase") { }

    public DbSet<Collaborator> Collaborators { get; set; }
    public DbSet<Department> Departments { get; set; }
    public DbSet<Manager> Managers { get; set; }
}

然后当您访问此上下文时,应生成表。 您还可以使用您应该从要实施的策略继承的数据为数据库设定种子,请查看此链接seeding database