entity framework代码首先是不创建数据库

以下是我的解决方案的概述:

在此处输入图像描述

这是我的PizzaSoftwareData类:

namespace PizzaSoftware.Data { public class PizzaSoftwareData : DbContext { public DbSet Customers { get; set; } public DbSet Orders { get; set; } public DbSet Products { get; set; } public DbSet Users { get; set; } } } 

根据Scott Guthrie博客上的一个示例,您必须在应用程序的开头运行此代码才能创建/更新数据库架构。

 Database.SetInitializer(new CreateDatabaseIfNotExists()); 

我在PizzaSoftware.UI中的Program.cs中运行那行代码。

 namespace PizzaSoftware.UI { static class Program { ///  /// The main entry point for the application. ///  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Database.SetInitializer(new CreateDatabaseIfNotExists()); Application.Run(new LoginForm()); } } } 

谁能告诉我为什么数据库没有创建表?

这是我的App.config文件中的连接字符串:

       

当您需要访问数据库时,将执行初始化程序。 如果要在应用程序启动时创建数据库,请使用:

 context.Database.Initialize(true); 

或者不要使用初始化程序并调用:

 context.Database.CreateIfNotExists(); 

而不是将此代码放入main方法:

 Database.SetInitializer(new CreateDatabaseIfNotExists()); 

把它放到DBContext中:

 namespace PizzaSoftware.Data { public class PizzaSoftwareData : DbContext { public PizzaSoftwareData() : base("name=PizzaSoftwareData") { Database.SetInitializer(new CreateDatabaseIfNotExists()); } public DbSet Customers { get; set; } public DbSet Orders { get; set; } public DbSet Products { get; set; } public DbSet Users { get; set; } } }