日志25-7-15

本文最后更新于 2025年7月24日星期四 17:34

今天主要学习管理数据库架构、查询数据、保存数据这3个章节。

  • 管理数据库架构
    • 迁移:写好C#实体类后用迁移指令生成数据库表,更换环境后可以再用迁移指令复刻当时记录下来的数据库表
    • 创建和删除API:用于测试环境
    • 逆向工程:先创建数据库表,再生成实体类型代码
  • 查询数据
    • 跟踪查询:DbContext默认记录查询结果,在调用saveChanges()后,会自动生成执行相关的修改代码
    • 加载相关数据:当一个类拥有其他类的数据时,指定被包含的类如何加载
      • 预先加载:【推荐】查询主实体后立刻加载
      • 延迟加载:查询主实体后,手动加载
      • 显式加载:访问导航属性时再加载
    • 拆分查询:将一个大的SQL拆成多个小SQL
    • 复杂查询运算符:SQL中的聚合函数
    • SQL查询:直接使用原生SQL语句来查询
    • 查询标记:为生成的SQL语句产生注释
    • NULL值的比较:SQL中的NULL值严格来说是UNKNOWN,在比较2个NULL值时要用Object.Equal()
  • 保存数据
    • 基本保存:跟踪查询直接使用SaveChanges(),非跟踪查询需要追加Attach()或Update()
    • 相关数据:当一个类中存在其他类数据时,添加/删除/修改父子关系都会导致父类/子类同步被添加/删除/修改外键
    • 级联删除:默认启用,删除父类时,子类也被删除
    • 版本冲突:EF Core使用乐观锁
    • ExecuteUpdate()、ExecuteDelete():直接在SQL服务器执行修改/删除操作
    • 事务
      • 显示事务
      • 隐式事务

日志25-7-15
https://zhiyun.blog/日志25-7-15/
作者
Okita
发布于
2025年7月16日
许可协议