Files
Migu2.0/MiGu.DB/README.md
T
wei.wu 51c3fc1994 持久层重构为独立 MiGu.DB 工程并优化集成
- 新增 MiGu.DB 项目,迁移所有领域实体与枚举,统一模型约定
- 实现 Entity/Repository/UoW/Provider/Exception 等接口与实现
- 支持数据修补机制,完善 Sqlite 初始迁移与数据库管理
- Server 侧移除 EF Core 相关,依赖 MiGu.DB,PlatformPersistence 适配
- 业务服务注入 UoW/Repository,状态字段统一用 enum 及辅助类
- 统一异常处理,Controller 映射 HTTP 状态码
- 配置项与文档补充数据库启动、SchemaMode、迁移说明
- 新增 GlobalUsings.Db.cs、WmsStatusAliases.cs 简化类型引用
- 新增 HttpActorContextMiddleware 支持操作者上下文一致性
- 新增 MiGuDbContextModelSnapshot 追踪数据库结构
- 优化代码结构,解耦领域与持久层,提升扩展性与安全性
2026-07-27 14:26:04 +08:00

2.4 KiB
Raw Blame History

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
  • 复数辅助类(StorageStatusesLocationKinds…)负责 API 字符串解析与集合校验。

扩展

  • 新 Provider:实现 IDbProviderSetup + Migrations/{Name}/
  • 新领域Domains/Xxx 实体 + Configuration;可选 IEntityModule
  • 数据修补:实现 IDataMigrator(优先 LINQ;枚举旧值刷库等特例可定点 raw UPDATE)

生成 MigrationSqlite

完整步骤、命令说明与排错见 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)。