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>
运行程序,在数据库管理工具中就生成了我们想要的数据库:
就是这么多!