一、引言
我们使用Code First的方式来生成数据库表,我们先讲解如何在控制台项目中生成数据库表。
在前面的文章中,我们是直接在控制台项目中安装的Mircosoft.EntityFrameworkCore,在真实的项目中,我们很少这样使用,都是采用分层的结构,将EF Core有关的操作放在一个单独的类库项目里,下面的例子中我们就以这种分层的结构来进行讲解。项目结构如下图所示:
项目结构:
EFCoreTest.Con:控制台项目,用来运行程序,在项目中会引用EFCoreTest.Data。
EFCoreTest.Data:类库项目,基于.Net Standard。存放的是与EF Core相关的内容。
EFCoreTest.Model:类库项目,基于.Net Standard。存放项目中使用到的实体类。
1、添加实体类
我们首先在EFCoreTest.Model类库项目里添加Student实体:
namespaceEFCoreTest.Model
{public classStudent
{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }public int Gender { get; set; }
}
}
2、添加Mircosoft.EntityFrameworkCore
我们在EFCoreTest.Data类库里面添加Mircosoft.EntityFrameworkCore包:
我们使用SqlServer数据库,所以我们还要安装Microsoft.EntityFrameworkCore.sqlServer包:
安装完成以后我们添加EFCoreTest.Model的引用,然后添加数据上下文类,该类继承自DbContext:
usingEFCoreTest.Model;usingMicrosoft.EntityFrameworkCore;namespaceEFCoreTest.Data
{///
///数据上下文类,继承自DbContext///
public classEFCoreDbContext:DbContext
{///
///重写OnConfiguring方法///
///
protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)
{//使用SqlServer数据库,传递连接字符串
optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=EFTestDb;User ID=sa;Password=123456;");base.OnConfiguring(optionsBuilder);
}///
///重写OnModelCreating,主要做一些配置///例如设置生成的表名、主键、字符长度///
///
protected override voidOnModelCreating(ModelBuilder modelBuilder)
{//设置生成的表名
modelBuilder.Entity().ToTable("T_Student");//设置主键,可以不设置,会默认把Id字段当成主键
modelBuil