2011-07-12 48 views
1

我嘗試從實體框架代碼數據庫第一本教程無法從實體框架4.1 Codefirst有了SQL Server生成數據庫2005

http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs

跟隨,但我使用SQL Server 2005,而不是當的SQLExpress但是當我執行解決方案沒有任何創建。我的代碼有什麼問題

這是我的代碼。

Movie.cs

public class Movie 
{ 
    public int ID { get; set; } 
    public string Title { get; set; } 
    public DateTime ReleaseDate { get; set; } 
    public string Genre { get; set; } 
    public decimal Price { get; set; } 
} 

public class MovieDBContext : DbContext 
{ 
    public DbSet<Movie> Movies { get; set; } 
} 

而且這是在web.config中我的連接字符串

<add name="MovieDBContext" 
    connectionString="data source=...;Integrated Security=SSPI;initial catalog=MovieDB;User Id=...;Password=..." 
    providerName="System.Data.SqlClient" /> 

什麼錯我的代碼?爲什麼數據庫沒有創建。

謝謝大家幫助我。

回答

3

數據庫沒有創建,直到它被用於第一次。你必須做任何以下的觸發創建數據庫:

  • 創建上下文的實例,並檢索或持續的任何數據
  • 創建上下文的實例,並調用context.Database.CreateIfNotExists()
  • 創建上下文的實例,並調用context.Database.Initialize(false)
  • 創建上下文的實例,並調用context.Database.Create()
+0

非常感謝您的回答。隨着時間的推移,我對此很迷惑。 – Zabahey

0

你有沒有加入初始化應用程序啓動methid在Global.asax文件

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MovieDBContext>()); 
+0

是的,我嘗試添加他們在我的代碼,但沒有發生任何事 – Zabahey

0

這裏是我的。我強制數據庫初始化,然後放棄上下文,然後我強制播種它。我無法使默認行爲與Oracle和SQL CE一起工作。

var initer = new PPContextInitializer(); 
Database.SetInitializer<MovieDBContext >(new DropCreateDatabaseIfModelChanges<MovieDBContext >()); 

using (var db = new MovieDBContext()) 
{ 
    db.Database.Initialize(true); 
} 

using (var db1 = new MovieDBContext()) 
{ 
    initer.Seed(db1); 
}