2014-02-13 24 views
2

我試圖使用EF6和MySQL。我確信我與數據庫的連接正在工作,因爲首選數據庫模式存在。但是,只有__migration表存在。EntityFramework 6 + MySQL:模型表格不會自動創建

我有以下代碼

我的模型

[Table("my_model")] 
public class ModelA 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ModelAId { get; set; } 

    public string ModelAProperty { get; set; } 
} 

我的DbContext

public class ModelAContext : DbContext 
{ 
    public ModelAContext() : base("DefaultConnection") 
    { 

    } 

    static ModelAContext() 
    { 
     Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ModelAContext>()); 
    } 

    public DbSet<ModelA> MyModels { get; set; } 
} 

我的初始化程序

// Assuming this is run during the application initialization 
    public static void InitializeDB() 
    { 
     using (var context = new ModelAContext()) 
     { 
      if (!context.Database.Exists()) 
      { 
       // Create the SimpleMembership database without Entity Framework migration schema 
       ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); 
      } 
      context.Database.CreateIfNotExists(); 
     } 
    } 

未創建的MODELA相應的表。 我總是得到一個MySQL異常,其中一個表(在本例中爲app.my_model)不存在。

任何幫助將不勝感激。

P.S.如果你有任何好的教程,我可以在ASP.NET MVC4中設置我的MySQL和EF6,那就太好了。截至目前,我似乎無法使用MVC4的WebSecurity助手。

+0

在關於設置EF6和MySQL在一起,這裏的研究,我做了一些幾個月前的一些注意事項,希望它能幫助 - http://stackoverflow.com/ question/20277677/dynamic-mysql-database-connection-for-entity-framework-6/20294903#20294903 –

+0

@ francisco.preller,謝謝你的迴應。我其實已經從那個鏈接看到你的答案。我已經得到了MySQL和EF6的工作,但模型的表格不是自動創建的。看來context.Database.CreateIfNotExists()只能創建數據庫/模式而不是表。基於我的研究,他們說我需要創建一個查詢到DbSet來初始化表,但是,我總是會在表不存在的地方出錯。 – edmandie

回答

1

在你Global.ascx廣告

AppDbContext db = new AppDbContext(); 
      db.Database.Initialize(true);