2026-07-02 15:53:30 +08:00
|
|
|
|
# tx_software 维度表
|
|
|
|
|
|
|
|
|
|
|
|
> 所属模块:[数据模型概览](../概览.md)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 表定义
|
|
|
|
|
|
|
|
|
|
|
|
**表名**:`tx_software`
|
|
|
|
|
|
|
|
|
|
|
|
**描述**:TX软件版本维度表,存储所有软件版本号(hex版本)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 字段定义
|
|
|
|
|
|
|
|
|
|
|
|
| 列名 | 类型 | 约束 | 说明 |
|
|
|
|
|
|
|------|------|------|------|
|
|
|
|
|
|
| id | UUID | PK, NOT NULL | 主键,自动生成 |
|
|
|
|
|
|
| version | VARCHAR(50) | UNIQUE, NOT NULL | 软件版本号(hex版本) |
|
|
|
|
|
|
| is_deleted | BOOLEAN | NOT NULL, DEFAULT FALSE | 软删除标记 |
|
|
|
|
|
|
| created_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 创建时间 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 3. EF Core 模型
|
|
|
|
|
|
|
2026-07-02 18:13:56 +08:00
|
|
|
|
### 实体类
|
|
|
|
|
|
|
2026-07-02 15:53:30 +08:00
|
|
|
|
```csharp
|
|
|
|
|
|
// Models/TxSoftware.cs
|
|
|
|
|
|
namespace WCTDataMiner.Models;
|
|
|
|
|
|
|
|
|
|
|
|
public class TxSoftware
|
|
|
|
|
|
{
|
|
|
|
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
|
|
|
|
public string Version { get; set; } = null!;
|
|
|
|
|
|
public bool IsDeleted { get; set; } = false;
|
|
|
|
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
|
|
|
|
|
|
|
|
|
|
// Navigation Properties
|
|
|
|
|
|
public ICollection<TestScenario> TestScenarios { get; set; } = [];
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-07-02 18:13:56 +08:00
|
|
|
|
### 配置类
|
|
|
|
|
|
|
|
|
|
|
|
```csharp
|
|
|
|
|
|
// Data/Configurations/TxSoftwareConfiguration.cs
|
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
|
|
using WCTDataMiner.Models;
|
|
|
|
|
|
|
|
|
|
|
|
namespace WCTDataMiner.Data.Configurations;
|
|
|
|
|
|
|
|
|
|
|
|
public class TxSoftwareConfiguration : IEntityTypeConfiguration<TxSoftware>
|
|
|
|
|
|
{
|
|
|
|
|
|
public void Configure(EntityTypeBuilder<TxSoftware> builder)
|
|
|
|
|
|
{
|
|
|
|
|
|
builder.ToTable("tx_software");
|
|
|
|
|
|
|
|
|
|
|
|
builder.HasKey(e => e.Id);
|
|
|
|
|
|
builder.Property(e => e.Id).HasColumnName("id");
|
|
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Version)
|
|
|
|
|
|
.IsRequired()
|
|
|
|
|
|
.HasMaxLength(50)
|
|
|
|
|
|
.HasColumnName("version");
|
|
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.IsDeleted)
|
|
|
|
|
|
.IsRequired()
|
|
|
|
|
|
.HasDefaultValue(false)
|
|
|
|
|
|
.HasColumnName("is_deleted");
|
|
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.CreatedAt)
|
|
|
|
|
|
.IsRequired()
|
|
|
|
|
|
.HasDefaultValueSql("NOW()")
|
|
|
|
|
|
.HasColumnName("created_at");
|
|
|
|
|
|
|
|
|
|
|
|
builder.HasIndex(e => e.Version).IsUnique();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-07-02 15:53:30 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 使用说明
|
|
|
|
|
|
|
|
|
|
|
|
软件版本在解析文件名时自动创建,无需预置数据:
|
|
|
|
|
|
|
|
|
|
|
|
```csharp
|
|
|
|
|
|
// 获取或创建软件版本
|
|
|
|
|
|
public async Task<TxSoftware> GetOrCreateAsync(string version)
|
|
|
|
|
|
{
|
|
|
|
|
|
var existing = await context.TxSoftwares
|
|
|
|
|
|
.FirstOrDefaultAsync(s => s.Version == version);
|
|
|
|
|
|
|
|
|
|
|
|
if (existing != null) return existing;
|
|
|
|
|
|
|
|
|
|
|
|
var newSoftware = new TxSoftware { Version = version };
|
|
|
|
|
|
context.TxSoftwares.Add(newSoftware);
|
|
|
|
|
|
await context.SaveChangesAsync();
|
|
|
|
|
|
return newSoftware;
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|