EF Code 多对多表关系建设和Linq 知识点

自引用组织结构树,比如部门、组织

除了根节点,其他节点都有一个父节点,也包含多个子节点,那么在定义表结构时,既要申明父表的关系,也要申明子表的关系

EF Code 多对多

builder.ToTable("T_Student");

builder.HasMany<Teacher>(x=>x.Teachers).WithMany(x=>x.Students).UsingEntity(j=>j.Totable("T_Students_Teachers"));

----------------------------------------------------------------------------------------------------------------------------

Linq使用以下两个对象造成的差异如下:

  • IQueryable  将Linq转化为sql 由服务器执行后返回数据 通常查询速度更快
  • IEnumaerble  在内存中处理Linq处理

IQueryable 具有延迟特征,只有到遍历、ToList等环节才会去数据库执行Sql语句。

EF Core  中尽量使用异步方法,异步减少耗时操作占用线程资源。

string name="';

int age=10;

EFCore 中执行原生Sql:db.Tables.ExecuteSqlInterpolateAsync("insert into student (name,age) values({name},{age})")

EFCore 将name、age传参做处理,避免了Sql注入的风险。

-----------------------------------------------------------------------------------------------------------------------------

EFCore 全局查询筛选器:自动在Sql后加入条件

场景:多租户、软删除

在数据配置文件中使用HasQueryFilter()过滤数据

如果查询时需要显示特殊的信息,可以使用db.IgnoreQueryFilters().Where()查询信息

-----------------------------------------------------------------------------------------------------------------

EFCore底层不具备批量修改、删除、插入数据

可以使用杨中科老师开发的开源插件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值