2014-03-07 207 views
1

我想在VS Express中創建MVC 4應用程序(OdeToFood教程)。我在模型中創建了這個類。實體框架不創建數據庫

但是當我運行的代碼,是不是正在創建數據庫「OdeToFoodDB2」

namespace OdeToFood.Models 
{ 
    public class OdeToFoodDB2 : DbContext 
    { 
     public DbSet<Resturant> Resturant { get; set; } 
     public DbSet<ResturantReview> ResturantReview { get; set; } 
    } 
} 

在web.config文件中我有下面的連接字符串

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-OdeToFood-20140306003945;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OdeToFood-20140306003945.mdf" providerName="System.Data.SqlClient" /> 

但這DB不包含我在Model文件夾中指定的表格。

回答

6

使您的類名稱與連接字符串名稱相同。它會工作。

<add name="OdeToFoodDB2" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-OdeToFood-20140306003945;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OdeToFood-20140306003945.mdf" providerName="System.Data.SqlClient" /> 

更新:

有多種方法,使你可以告訴的DbContext如何使用數據庫服務器:

1)假設你有連接字符串和上面一樣,保持上下文類名稱與連接字符串名稱相同。可替換地

public class MyContext : DbContext 
{ 
    public MyContext() 
     : base("OdeToFoodDB2") 
    { 
    } 
} 

3.),也可以使用形式爲「名稱=」傳遞給字符串:

public class OdeToFoodDB2 : DbContext 
{ 
} 

2.)另外,也可以在上下文基構造指定連接串DbContext構造函數。例如:

public class MyContext : DbContext 
{ 
    public MyContext() 
     : base("name=OdeToFoodDB2") 
    { 
    } 
} 
+0

是它的工作...謝謝... :) – rollo

+0

@Awais:U [R歡迎。不要忘記投票。乾杯! – Saket

+0

不錯,沒有意識到+1 – NinjaNye

1

DbContext有一個接受連接字符串名稱的構造函數重載。

您也可以嘗試增加新的初始化,以保持數據庫最新

namespace OdeToFood.Models 
{ 
    public class OdeToFoodDB2 : DbContext 
     : base("DefaultConnection") 
    { 
     public DbSet<Resturant> Resturant { get; set; } 
     public DbSet<ResturantReview> ResturantReview { get; set; } 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     var initializer = new MigrateDatabaseToLatestVersion<OdeToFoodDB2, Configuration>() 
     Database.SetInitializer(initializer); 
     base.OnModelCreating(); 
} 
相關問題