---
phase: 03-
plan: 03
type: execute
wave: 2
depends_on:
- 03-gateway-cluster-entities
- 03-gateway-route-update
files_modified:
- Fengling.Platform.Infrastructure/PlatformDbContext.cs
- Fengling.Platform.Infrastructure/IInstanceStore.cs
- Fengling.Platform.Infrastructure/InstanceStore.cs
- Fengling.Platform.Infrastructure/IClusterStore.cs
- Fengling.Platform.Infrastructure/ClusterStore.cs
autonomous: true
requirements:
- GATEWAY-RESTRUCTURE-05
- GATEWAY-RESTRUCTURE-06
must_haves:
truths:
- "PlatformDbContext 包含GwCluster DbSet"
- "IClusterStore 替代 IInstanceStore"
artifacts:
- path: "Fengling.Platform.Infrastructure/PlatformDbContext.cs"
provides: "更新的 DbContext"
- path: "Fengling.Platform.Infrastructure/IClusterStore.cs"
provides: "集群存储接口"
min_lines: 40
---
# 计划 03: 更新 Infrastructure 层
## 目标
更新 PlatformDbContext 配置,创建 IClusterStore 接口和实现,替换原有的 IInstanceStore。
**目的:** 支持新的 GwCluster 聚合根,移除已废弃的实体 DbSet。
**输出:** 更新的 PlatformDbContext、IClusterStore/ClusterStore。
## 上下文
@Fengling.Platform.Infrastructure/PlatformDbContext.cs
@Fengling.Platform.Infrastructure/IInstanceStore.cs
@Fengling.Platform.Infrastructure/RouteStore.cs (参考模式)
## 任务
任务 1: 更新 PlatformDbContext
Fengling.Platform.Infrastructure/PlatformDbContext.cs
1. 移除 DbSet:
- 移除 DbSet<GwTenant> GwTenants
- 移除 DbSet<GwServiceInstance> GwServiceInstances
2. 添加 DbSet:
- 添加 DbSet<GwCluster> GwClusters
3. 在 OnModelCreating 中配置:
- GwCluster 聚合根配置
- OwnsMany GwDestinations 配置
- OwnsOne GwHealthCheckConfig 配置
- OwnsOne GwSessionAffinityConfig 配置
参考 03-RESEARCH.md 中的 EF Core 配置代码。
dotnet build 通过
PlatformDbContext 已更新
任务 2: 创建 IClusterStore 接口
Fengling.Platform.Infrastructure/IClusterStore.cs
创建 IClusterStore 接口,包含:
- FindByIdAsync, FindByClusterIdAsync
- GetAllAsync, GetPagedAsync, GetCountAsync
- CreateAsync, UpdateAsync, DeleteAsync
- AddDestinationAsync, UpdateDestinationAsync, RemoveDestinationAsync
参考 IRouteStore 模式。
文件可编译
IClusterStore 接口已创建
任务 3: 创建 ClusterStore 实现
Fengling.Platform.Infrastructure/ClusterStore.cs
创建 ClusterStore<TContext> 实现 IClusterStore:
- 泛型约束: where TContext : PlatformDbContext
- 实现所有接口方法
- 支持软删除
- 支持内嵌 Destination 的 CRUD
参考 RouteStore 模式。
dotnet build 通过
ClusterStore 实现已创建
任务 4: 删除 IInstanceStore 和 InstanceStore
Fengling.Platform.Infrastructure/IInstanceStore.cs
Fengling.Platform.Infrastructure/InstanceStore.cs
删除这两个文件:
- 已被 IClusterStore/ClusterStore 替代
- 确认无其他引用
dotnet build 通过
旧文件已删除
## 验证
- [ ] PlatformDbContext 已更新
- [ ] IClusterStore/ClusterStore 已创建
- [ ] 旧文件已删除
- [ ] Build 无错误通过
## 成功标准
Infrastructure 层更新完成,准备更新 DI 注册。