这里说一下Code First 的实现原理
step1:首先建立自已的表,即建一个类。类与表对应
User类
public class User { public int UserID { set; get; } [Required] [Display(Name = "User name")] public string UserName { get; set; } [Required] [DataType(DataType.EmailAddress)] [Display(Name = "Email address")] public string Email { get; set; } [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "Confirm password")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; } public string Roles { get; set; } }
其中[]为对数据库列的修饰
step2:建立数据上下文,用于与数据库同步
private readonly static string CONNECTION_STRING = "name=connectString";
//用于与数据库的连接,对应
<configuration>
<connectionStrings>
<add name="connectString"
//用于设置表
public DbSet<User> Users { set; get; }
//在基类的时候连接数据库,并且注册(这个地方的原理不太清楚,请知道的大神知道)
public SchoolContext() : base(CONNECTION_STRING)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约
}
}
public class SchoolContext:DbContext { private readonly static string CONNECTION_STRING = "name=connectString"; public DbSet<User> Users { set; get; } public SchoolContext() : base(CONNECTION_STRING) { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约 } }
这样就完成了Codefirst
当然我们也可以在初始化数据库时加写数据:
Application_Start()中加入如下代码:
Database.SetInitializer<SchoolContext>(new SchoolInitializer());
其中SchoolInitializer为一个初始化的类
代码如下:
public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext> { protected override void Seed(SchoolContext context) { var users = new List<User>{ new User{ UserID=1, UserName="Admin", Password="123", ConfirmPassword="123", Email="Admin@Dell.com", Roles="Admin"}, new User{ UserID=2, UserName="User1", Password="123", ConfirmPassword="123", Email="User1@Dell.com", Roles="User"}, }; users.ForEach(s => context.Users.Add(s)); context.SaveChanges(); } }
如有转载:请注明出处哦,亲!