DbContext 那些事 —— 数据库初始化

数据库初始化

上图,这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数。

在上面的图中,context类中的base构造器中,可以填入下面的参数:

  • 无参数(No Parameter)
  • 数据库的名字(Database Name)
  • 连接字符串的名字(Connection String Name)

无参数


 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data.Entity;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace EF1
 9 {
10    public class DbContextClass:DbContext
11     {
12        public DbContextClass()
13            : base()
14        { }
15        public DbSet<Student> Studnets { get; set; }
16 
17        public DbSet<Standard> Standards { get; set; }
18 
19        
20        protected override void OnModelCreating(DbModelBuilder modelBuilder)
21        {
22            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());
23 
24            base.OnModelCreating(modelBuilder);
25        }
26 
27     }
28 }

生成数据库:

数据库的名字


你同样可以指定数据库的名字在base构造器中,例如:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data.Entity;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace EF1
 9 {
10    public class DbContextClass:DbContext
11     {
12        public DbContextClass()
13            : base("MYDBHAHA")
14        { }
15        public DbSet<Student> Studnets { get; set; }
16 
17        public DbSet<Standard> Standards { get; set; }
18 
19        
20        protected override void OnModelCreating(DbModelBuilder modelBuilder)
21        {
22            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());
23 
24            base.OnModelCreating(modelBuilder);
25        }
26 
27     }
28 }

然后生成的数据库是:

连接字符串


using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF1
{
   public class DbContextClass:DbContext
    {
       public DbContextClass()
           : base("ConnectionString") //或者你也可以这样 : base("name=ConnectionString")
       { }
       public DbSet<Student> Studnets { get; set; }

       public DbSet<Standard> Standards { get; set; }

       
       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
           Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());

           base.OnModelCreating(modelBuilder);
       }

    }
}

然后在web.config中加入连接字符串:

1 <connectionStrings>
2     <add name="ConnectionString" connectionString="server=.;database=EFCodeFirstDB;uid=sa;pwd=Password_1" providerName="System.Data.SqlClient"/>
3 </connectionStrings>

运行程序,在数据库管理工具中就生成了我们想要的数据库:

 

就是这么多!

posted @ 2015-12-06 12:08  duanyong  阅读(2670)  评论(0编辑  收藏  举报