2026-07-27 14:26:04 +08:00
|
|
|
|
# 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` 调用:
|
|
|
|
|
|
|
|
|
|
|
|
```csharp
|
|
|
|
|
|
builder.Services.AddPlatformPersistence(builder.Configuration); // 内部 AddMiGuDb
|
2026-08-03 09:41:03 +08:00
|
|
|
|
await app.Services.MigrateMiGuDbAsync();
|
2026-07-27 14:26:04 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**启动流程、SchemaMode、开发/发版配置说明见 [MiGu.Server/README.md · 数据库启动流程](../MiGu.Server/README.md#数据库启动流程)。**
|
|
|
|
|
|
|
|
|
|
|
|
配置键(`Database:*` / `ConnectionStrings:Platform`)由 Server 的 `appsettings*.json` 提供;本库通过 `AddMiGuDb(IConfiguration)` 读取。
|
|
|
|
|
|
|
|
|
|
|
|
## 实体与枚举
|
|
|
|
|
|
|
|
|
|
|
|
- 业务状态字段为 **enum**,约定自动 `HasConversion<string>()`(严格 1:1,不做读侧归一)。
|
|
|
|
|
|
- `Version` 为乐观并发令牌;软删走全局 `HasQueryFilter`。
|
|
|
|
|
|
- 复数辅助类(`StorageStatuses`、`LocationKinds`…)负责 API 字符串解析与集合校验。
|
|
|
|
|
|
|
|
|
|
|
|
## 扩展
|
|
|
|
|
|
|
|
|
|
|
|
- **新 Provider**:实现 `IDbProviderSetup` + `Migrations/{Name}/`
|
|
|
|
|
|
- **新领域**:`Domains/Xxx` 实体 + Configuration;可选 `IEntityModule`
|
|
|
|
|
|
- **数据修补**:实现 `IDataMigrator`(优先 LINQ;枚举旧值刷库等特例可定点 raw UPDATE)
|
|
|
|
|
|
|
|
|
|
|
|
## 生成 Migration(Sqlite)
|
|
|
|
|
|
|
|
|
|
|
|
完整步骤、命令说明与排错见 **[MIGRATIONS.md](./MIGRATIONS.md)**。
|
|
|
|
|
|
|
|
|
|
|
|
快速命令:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
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)。
|