0

我試圖擴展Asp.NET MVC框架,以便可以創建模塊。我希望能夠製作單獨的迷你mvc項目,將它們結合到mvc-app中並構建/安裝整個項目。這樣我可以將所需的模塊選擇到一個應用程序中。在asp.net mvc框架的模塊化方法中創建數據庫表

爲了讓我想用這個方法小型MVC項目:http://www.wynia.org/wordpress/2008/12/aspnet-mvc-plugins/

現在我試圖使數據庫建立與多個dbcontexts。我使用IRepository模式來實現這一點。首先,我用這種模式創建了一個實體框架(4.3)項目,並能夠使用OnModelCreating事件創建一個完整的數據庫。

public class Context : DbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 

      // /* Use MEF to load all plugins. I'll use the mock interface IPlugin */ 

      List<IContext> Contexts = new List<IContext>(); 
      Contexts.Add(new BikeContext()); 
      Contexts.Add(new CarContext()); 
      Contexts.Equals(new BlogContext()); 


      foreach (IContext context in Contexts) 
       context.Setup(modelBuilder); 
     } 
    } 

這是運行安裝程序,並在每個子上下文的例子功能:

public class CarContext : Context, IContext 
    { 
     public List<Car> Cars { get; set; } 

     void IContext.Setup(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<Car>().ToTable("Cars"); 
      modelBuilder.Entity<Car>().HasKey(car => car.Id);    
     } 
    } 

這個倉庫是從MEF Plugins and EF CodeFirst - How?

給出的例子。如果我用這個在一個MVC應用程序(在默認情況下使用EF,對吧?)OnModelCreating函數確實運行,所以安裝函數也是如此,但它既不創建數據庫也不創建表。最後,我得到一個錯誤,因爲應用程序在嘗試選擇數據時無法建立與數據庫的連接。這是合乎邏輯的,因爲沒有數據庫。

我基本上想要的是在MVC應用程序中使用mef-plugins-and-ef-codefirst解決方案。我錯過了什麼嗎?有沒有另外一種方法在MVC/EF的代碼中手動創建表?

回答

0

嗯,我找到了自己的解決方案:

我加入這一個控制器的索引:

Context context = new Context(); 
      context.Database.CreateIfNotExists(); 

而且改變了CarContext公共列表進入公衆DbSet。

它使數據庫現在與表,我通過CarContext獲取數據。