新增车辆任务与报警表,完善实体与DbContext配置。细化OTA权限校验,增强回传会话IP安全。优化OTA上传与设置面板,调度器支持重启恢复。报警采集逻辑支持历史分段。
MiGu.DB
迷毂平台持久化框架(EF Core 8)。由 MiGu.Server 引用;本工程不依赖 ASP.NET。
分层
| 目录 | 职责 |
|---|---|
Abstractions/ |
对外契约:能力接口、仓储/UoW、Provider、Module、Actor、异常 |
Kernel/ |
框架实现:实体基类族、MiGuDbContext、约定/Interceptor、仓储、Hosting |
Domains/ |
业务实体、枚举、辅助类与 IEntityTypeConfiguration |
Migrations/Sqlite/ |
Schema 版本化来源(发版用;开发可用 EnsureCreated 不跑迁移) |
使用
由 MiGu.Server 调用:
builder.Services.AddPlatformPersistence(builder.Configuration); // 内部 AddMiGuDb
await app.Services.EnsurePlatformDatabaseAsync(); // 内部 MigrateMiGuDbAsync
启动流程、SchemaMode、开发/发版配置说明见 MiGu.Server/README.md · 数据库启动流程。
配置键(Database:* / ConnectionStrings:Platform)由 Server 的 appsettings*.json 提供;本库通过 AddMiGuDb(IConfiguration) 读取。
实体与枚举
- 业务状态字段为 enum,约定自动
HasConversion<string>()(严格 1:1,不做读侧归一)。 - 旧库值(如
Available/Idle)由LegacyStatusNormalizationMigrator一次性刷成规范名。 Version为乐观并发令牌;软删走全局HasQueryFilter。- 复数辅助类(
StorageStatuses、LocationKinds…)负责 API 字符串解析与集合校验。
扩展
- 新 Provider:实现
IDbProviderSetup+Migrations/{Name}/ - 新领域:
Domains/Xxx实体 + Configuration;可选IEntityModule - 数据修补:实现
IDataMigrator(优先 LINQ;枚举旧值刷库等特例可定点 raw UPDATE)
生成 Migration(Sqlite)
完整步骤、命令说明与排错见 MIGRATIONS.md。
快速命令:
dotnet ef migrations add <Name> `
--project .\MiGu.DB\MiGu.DB.csproj `
--startup-project .\MiGu.Server\MiGu.Server.csproj `
--output-dir Migrations/Sqlite `
--namespace MiGu.DB.Migrations.Sqlite `
--context MiGuDbContext
生成后请确认 MiGuDbContextModelSnapshot.cs 落在 Migrations/Sqlite/。
开发期使用 EnsureCreated 时仍可保留/继续提交 Migration 文件,启动不会应用它们,直到 SchemaMode 改回 Migrate(见 Server README)。