自引用组织结构树,比如部门、组织
除了根节点,其他节点都有一个父节点,也包含多个子节点,那么在定义表结构时,既要申明父表的关系,也要申明子表的关系
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底层不具备批量修改、删除、插入数据
可以使用杨中科老师开发的开源插件