Entity Framework 4.1 Code First not creating tables

后端 未结 4 967
予麋鹿
予麋鹿 2020-12-08 23:37

I am using EF 4.1 and have created a repository using DBContext etc. Connection string set to point to a SQL Server 2008 R2 Dev edition.

When I run a console app th

相关标签:
4条回答
  • 2020-12-09 00:06

    Better: add the initializer to the static constructor, like this:

    public class MyDbContext : DbContext 
    {
        static MyDbContext()
        {
            Database.SetInitializer(new MyDbContextContextInitializer());
        }
    }
    
    0 讨论(0)
  • 2020-12-09 00:13

    You can create the tables yourself - the easiest way is:

    IObjectContextAdapter adapter = (IObjectContextAdapter)context;
    string script = adapter.ObjectContext.CreateDatabaseScript();
    context.Database.ExecuteSqlCommand(script);
    

    Where context is my EF 4.1 database context. Prior to this code I drop all the tables (from the last time I created the db), and after this I seed it with data.

    0 讨论(0)
  • 2020-12-09 00:14

    You need to add this to your Application_Start()

     Database.SetInitializer(new MyDbContextContextInitializer());
     var context = new MyDbContextContext();
     context.Database.Initialize(true);
    

    The last line forces the DB to created

    0 讨论(0)
  • 2020-12-09 00:21

    To set the auto drop and create you would do something like this...

    public class MyDbContext : DbContext 
    {
        public IDbSet<Foo> Foos { get; set; }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            Database.SetInitializer(new MyDbContextInitializer());
    
            base.OnModelCreating(modelBuilder);
        }
    }
    
    public class MyDbContextInitializer : DropCreateDatabaseIfModelChanges<MyDbContext>
    {
        protected override void Seed(MyDbContext dbContext)
        {
            // seed data
    
            base.Seed(dbContext);
        }
    }
    
    0 讨论(0)
提交回复
热议问题