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()
});