2014-01-06 32 views
0

目前我有一個很好的模型,我可以基於該模型生成數據庫,但從我所知道的情況來看,表格從不會創建(導致各種有趣的運行時錯誤)。強制EF 6使用模型首先創建表格

我的理解是,有三個選項的代碼首先,這將迫使EF創建表對我來說:

  • DropCreateDatabaseAlways
  • CreateDatabaseIfNotExists
  • DropCreateDatabaseIfModelChanges

我怎樣才能使用這些如果我是先做模型的話?

此外,這是一個預期的錯誤,或者當我從模型中第一次選擇生成數據庫是否應該自動發生?

編輯:我打過電話

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

並沒有什麼變化。

+0

看看這個策略繼承[力初始化數據庫] [1] [1]:HTTP://計算器.com/questions/12724320 /強制代碼首先總是初始化一個不存在的數據庫 –

+0

@ilayzeidman其中是'.SetInitializer()'方法? – soandos

回答

2

也這是一個好toturial tutorial

,但如果你做的模型好你第一次訪問的DbContext數據庫應該由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

+0

如果模型現在只有好(不是以前),我怎麼能更新它到表?從模型生成數據庫似乎沒有辦法。另外,我找不到這種方法。我是否將其設置在上下文中? – soandos

+0

是的,它應該做的伎倆我做了很多時間,你創建自己的類繼承DbContext? –

+0

我沒有創建自己的類。我需要那樣做? – soandos

相關問題