SuperAPI AI 工具集

implementing-ef-core

数据与分析

查看项目

更新于 10-15 20:06

技能介绍

用途:在 Bitwarden 服务端创建或修改 EF Core 仓储与数据库迁移,支持 PostgreSQL、MySQL、SQLite,并保证与既有 Dapper 存储过程行为一致。

主要能力:EF 仓储位于 src/Infrastructure/EntityFramework/Repositories/,每个类实现与 Dapper 对应相同的接口,用 DbContext 和 LINQ 替代存储过程,但行为必须完全一致;[DatabaseData] 集成测试属性会在所有已配置数据库上运行同一测试,作为一致性保障。

使用方式:运行 pwsh ef_migrate.ps1 <MigrationName> 同时为所有 EF 目标生成迁移;迁移类名必须与 MSSQL 迁移名(来自 YYYY-MM-DD_##_MigrationName.sql 文件名)完全一致。提交前务必审查生成的 Up() 与 Down() 方法。

关键规则:每个实体一个 EntityTypeConfiguration<T> 类,不在 OnModelCreating 内联配置;ID 列不加 ValueGeneratedOnAdd(),ID 由应用代码 CoreHelpers.GenerateComb() 生成;不要随意添加导航属性,仅当存储过程也 JOIN 对应表时才添加,否则会产生与存储过程不符的 N+1 查询。

跨库注意:LINQ 翻译因提供程序而异,PostgreSQL 类型更严格,SQLite 的 ALTER TABLE 支持有限,大小写敏感取决于数据库排序规则而非 C# 代码。建议写干净 LINQ,跑 [DatabaseData] 测试,再按实际报错修复。

限制:EF 迁移生成器可能做出非最优决策(如删建索引、多余列修改),且不了解 Bitwarden 大表约束,未经仔细审查不要给 Cipher、OrganizationUser 等表加索引。资料未提供收费、平台或效果信息。