2

私はEntityFrameworkの完全な初心者であり、コードでデータベースを生成することができない場合に行き詰まります。

私のコンテキストは次のようなものです:

 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()にヒットすることを示しています。

4

1 に答える 1

2

クエリを実行する必要があります。これにより、データベースが存在するかどうかがチェックされ、存在しない場合は作成されます。

于 2012-04-18T18:12:05.440 に答える