无法使用SQL Server 2005从Entity Framework 4.1 Codefirst生成数据库

时间:2011-07-12 10:06:11

标签: entity-framework entity-framework-4.1 code-first

我尝试从实体框架代码创建数据库首先遵循本教程

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 个答案:

答案 0 :(得分:3)

在第一次使用数据库之前,不会创建数据库。您必须执行以下任何操作才能触发数据库创建:

  • 创建上下文的实例并检索或保留任何数据
  • 创建上下文的实例并致电context.Database.CreateIfNotExists()
  • 创建上下文的实例并致电context.Database.Initialize(false)
  • 创建上下文的实例并致电context.Database.Create()

答案 1 :(得分:0)

您是否在Global.asax文件中的应用程序启动中添加了initialize方法

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

答案 2 :(得分: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);
}