EF Core 的应用
Code First
使用步骤:
- 安装nuget包(Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools)
- 配置数据库连接
- 建立实体,如Student(一定要包含主键)
- 建立DBContext
public DBContext(DbContextOptions<DBContext> dbContext) : base(dbContext){}
public DbSet<Student> Students { get; set; }
- 创建迁移文件,使用命令
add-migration参数(文件名称)
,在程序包管理控制台 - 将迁移文件中的操作执行到数据库中,使用命令
update-database
,在程序包管理控制台 - 将DBContext注册到容器中
services.AddDbContext<DBContext>(option => option.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
- 使用EF Core
private readonly DBContext _context;
public HomeController(DBContext context) { _context = context; }
- 在项目中引入EF Core很简单,更深层次的使用,可参考官方文档
DB First
- 使用
Scaffold-DbContext
命令就可以同步数据库中的实体及关系 - 命令一:
Scaffold-DbContext 'Data Source=(Local);Database=TestMVC;uid=sa;pwd=winner' Microsoft.EntityFrameworkCore.SqlServer -Schemas * -contextdir Data -outputdir Models
- 命令二:
Scaffold-DbContext 'Data Source=(Local);Database=TestMVC;uid=sa;pwd=winner' Microsoft.EntityFrameworkCore.SqlServer -Table Table_1,Table_2,..... -contextdir Data -outputdir Models
- 参数说明:
- 命令
Scaffold-DbContext
后面的第一个参数是数据库连接字符串 - 第二个参数是提供程序的名称
-Schemas
指定包含架构中的每张表(我测试貌似有点问题,后面要跟参数,不然报错,但是官方文档也没有明确说明后面有参数,知道的同学评论说明一下)-Table
可指定一个或多个表(多个用逗号分隔)-contextdir
指定创建的上下文输出的目录-outputdir
指定创建的实体输出的目录
PS:在程序包管理控制台中,同步实体关系到数据库的相关命令,可参考这里