Files
WCTDataMiner/docs/data-model/entities/TxSoftware维度.md

2.5 KiB
Raw Blame History

tx_software 维度表

所属模块:数据模型概览


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 模型

实体类

// 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; } = [];
}

配置类

// 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();
    }
}

4. 使用说明

软件版本在解析文件名时自动创建,无需预置数据:

// 获取或创建软件版本
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;
}