首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解。
datebase first就是代表数据库优先,那么前提就是先创建数据库。
model first就是代表model优先,那么前提也就是先创建model,然后根据model自动建立数据库。
这两EF的编程方式在使用的过程中的区别为:
在添加ADO.NET实体数据模型的时候,database first选择的是从数据库生成。
并且在数据结构发生变化的时候,database first编程方式中是选择从数据库更新模型,因此就导致了database first是以数据库为主
而Model first选择的是空模型生成。
并且当数据结构发生变化的时候,model first选择的是从模型生成数据库。
所以这两种不同的方式就导致了 database first和Mode first的区别。
至于最后一个code first就是不需要创建一个ADO.NET实体模型的过程。直接在model里面写实体类和dbcontext上下文类。
但是在实际的过程中,如果dbcontext上下文类中如果没有添加
去除复数的约束
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
那么在使用code first的时候就会创建一个复数名的数据库。