EFCore CodeFirst


EFCore入门

创建数据库的步骤:

1.定义/修改Model

2.创建Migration文件

3.应用Migration到数据库/生成脚本

创建迁移:add-migration Initial
创建数据库:update-database init
生成脚本:script-migration

更新数据库:Update-Database -Verbose(但是好像没用)

EFCore常用操作

新增

删除

using var context = new AppDbContext();
var milan = context.Clubs.Single(x=>x.Name=="Ac Milan");
context.Clubs.Remove(milan);
var count = context.SaveChanges();

修改

using var context = new AppDbContext();
var league = context.Leagues.First();
league.Name += "~~";
context.SaveChanges();

问题:通常系统中,都是从前端传过来的数据,这时候怎样更新?

using var context = new AppDbContext();
var league = context.Leagues.AsNoTracking().First();
league.Name += "++";
context.Leagues.Update(league);
var count = context.SaveChanges();

设置全局的追踪状态:

ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

使用原生SQL查询:

FromSQLRaw("SELECT * ...")
FromSQLRawAsync ("SELECT * ...")
FromSQLInterpolated ($SELECT * WHERE x={var}")
FromSQLInterpolatedAsync ($"SELECT * WHERE x={var}")

在.net core中使用efcore:

services.AddDbContext(options=>
    {
        options.UseSqlServer()
    });