2011-07-12 50 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); 
}