用途:本技能聚焦用 EF Core 10 作为 ORM、变更跟踪与 LINQ 查询层来建模和访问数据库,并强调模型是与数据库的契约、迁移是 schema 历史、不要把 DbSet 直接暴露在 HTTP 边界。
主要能力与规则:迁移须版本化,不修改已上生产的迁移;不保存的读取用 AsNoTracking();Web API 不用懒加载以避免 N+1,改用 Include 或显式投影;复合写入用事务(保存本身即事务,多上下文/多操作时用 BeginTransaction);不拼接 SQL 输入,优先 LINQ;DbContext 以 scoped 每请求一个、不要 Singleton;不返回被跟踪实体。
组织与建模:代码可放 Infrastructure/Data(AppDbContext、Configurations、Migrations)与可选 Repositories;用 IEntityTypeConfiguration<> 承载 Fluent API,OnModelCreating 只应用配置。金额用 decimal 指定精度,时刻用 DateTimeOffset,为真实过滤/唯一约束建索引,软删除配全局过滤器,多租户用 tenantId 全局过滤器且不只信客户端。
查询:列表投影为 DTO,只 Include 必要图,分页设上限、列表增长时用游标,批量用 ExecuteUpdate/ExecuteDelete,证据充分才用编译查询,Include 笛卡尔积过大时用拆分查询。
迁移与部署:dotnet ef migrations add 并检查 SQL;生产在流水线或任务中先迁移再服务流量;schema 迁移与 seed 分开且 seed 幂等;多实例生产不用 SQLite。测试:UseInMemoryDatabase 只用于简单逻辑,优先 Testcontainers、共享 provider 的 SQLite 或 CI 数据库,覆盖唯一、外键和租户过滤。资料未给出具体收费、平台或效果信息。