2012-04-18 31 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

相關問題