常见数据库关系
- 一对一
- 一对多
- 多对多
其他类型的表关系
- 被包含的关系 :比如地址
- 拆分表: 比如保存些统计数据
- Table per hierarchy(TPH): 比如动物表,包含不同的动物,通过一字段值区分
- Table per Type(TPT): 每一类型一张表
EF查询分三个部分
- 数据上下文属性
- 一序列Linq操作或是EF指令
- 执行指令: foreach ToArray ,ToList First , Any 等等
数据查询的2种模式
- 正常模式: normal query
- 只读模式: readonly query 通过AsNoTracking() 可以提高查询性能
查询相关数据:
- eager loading 贪婪加载: Include() ThenInclude()
- explicit loading 显式加载:context.Entry() Collection() Reference() Load() Query()
- select loading 选择加载: select()
- lazy loading 延迟加载:
- Microsoft.EntityFrameworkCore.Proxies
- 添加关键字 virtual
- 在设置DbContext时 添加 UseLazyLoadingProxies()
- 通过构造函数注入延迟加载方法
- Microsoft.EntityFrameworkCore.Proxies
- 客户端 vs 服务器端运算
- AuthorsString不能用于需生成sql语句的操作, 比如排序,过滤等
- AuthorsString不能用于需生成sql语句的操作, 比如排序,过滤等