2012-04-18 33 views
2

我是一个初学者的实体框架,我坚持不可能让我的代码生成数据库。EF4代码第一个数据库生成

我的背景是这样的:

public class ChatContext : DbContext 
    { 
     public ChatContext() 
      : base("ChatContext") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<ChatRoom>() 
         .Map(c => c.ToTable("chat_rooms")); 

      modelBuilder.Entity<ChatUser>() 
         .HasMany(u => u.Rooms) 
         .WithMany(r => r.Users) 
         .Map(c => c.ToTable("chat_users")); 

      modelBuilder.Entity<ChatUser>() 
         .HasMany(u => u.ConnectedUsers); 

      base.OnModelCreating(modelBuilder); 
     } 

     public DbSet<ChatUser> Users { get; set; } 
     public DbSet<ChatRoom> Rooms { get; set; } 
     public DbSet<ChatMessage> Messages { get; set; }  
    } 

而且我的Global.asax:

public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 

     protected void Application_Start() 
     { 
      Database.SetInitializer<ChatContext>(new DropCreateDatabaseIfModelChanges<ChatContext>()); 

      RegisterRoutes(RouteTable.Routes); 
     } 
    } 

我的连接字符串中的Web.config:

<connectionStrings> 
    <add name="ChatContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=ChatContext;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

任何人都可以点在哪里问题在哪里?当我构建项目时,不会返回任何错误。 Global.axax中的一个断点显示它碰到了Application_Start()。

+0

你检查了你的本地实例的SQL服务器来查看是否创建数据库? – Shyju 2012-04-18 18:03:39

+0

是的,我做到了。甚至没有创建数据库。 – janhartmann 2012-04-18 18:04:29

+0

我是否需要实际调用/修改其中一个表以初始化数据库创建? – janhartmann 2012-04-18 18:05:20

回答

2

您需要执行查询。这将检查数据库是否存在,如果不存在,它将被创建。

+0

正;除非你尝试做某件事,否则什么都不做。任何排序的简单查询都会导致初始化。 – 2012-04-18 18:15:45

+0

当我这样做时,我得到:System.Data.SqlClient.SqlException:无效的对象名称'dbo.chat_rooms' - 任何猜测? – janhartmann 2012-04-18 18:39:44

+0

你可以连接到数据库并检查存在哪些表? – Xharze 2012-04-18 19:25:57

相关问题