Files
WCTDataMiner/src/WCTDataMiner.Core/Data/Configurations/PlossRecordConfiguration.cs

130 lines
4.0 KiB
C#
Raw Normal View History

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using WCTDataMiner.Core.Models;
namespace WCTDataMiner.Core.Data.Configurations;
public class PlossRecordConfiguration : IEntityTypeConfiguration<PlossRecord>
{
public void Configure(EntityTypeBuilder<PlossRecord> builder)
{
builder.ToTable("ploss_record");
builder.HasKey(e => e.Id);
builder.Property(e => e.Id).HasColumnName("id");
builder.Property(e => e.ScenarioId)
.IsRequired()
.HasColumnName("scenario_id");
2026-07-03 18:06:01 +08:00
// ===== 第一行字段nullable =====
builder.Property(e => e.PowLoss)
.IsRequired(false)
.HasColumnName("pow_loss");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.DeltaP)
.IsRequired(false)
.HasColumnName("delta_p");
2026-07-03 18:06:01 +08:00
// ===== 第二行字段(通用命名) =====
builder.Property(e => e.Field1)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_1");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field2)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_2");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field3)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_3");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field4)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_4");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field5)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_5");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field6)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_6");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field7)
.IsRequired()
.HasColumnName("field_7");
builder.Property(e => e.Field8)
.IsRequired()
.HasColumnName("field_8");
builder.Property(e => e.Field9)
.IsRequired()
.HasDefaultValue(0)
2026-07-03 18:06:01 +08:00
.HasColumnName("field_9");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field10)
.IsRequired()
.HasDefaultValue(0)
2026-07-03 18:06:01 +08:00
.HasColumnName("field_10");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field11)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_11");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field12)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_12");
2026-07-03 18:06:01 +08:00
builder.Property(e => e.Field13)
.IsRequired()
2026-07-03 18:06:01 +08:00
.HasColumnName("field_13");
builder.Property(e => e.Field14)
.IsRequired()
.HasDefaultValue(0)
.HasColumnName("field_14");
builder.Property(e => e.Field15)
.IsRequired()
.HasDefaultValue(0)
.HasColumnName("field_15");
builder.Property(e => e.Field16)
.IsRequired()
.HasDefaultValue(0)
.HasColumnName("field_16");
builder.Property(e => e.IsDeleted)
.IsRequired()
.HasDefaultValue(false)
.HasColumnName("is_deleted");
builder.Property(e => e.CreatedAt)
.IsRequired()
.HasDefaultValueSql("datetime('now')")
.HasColumnName("created_at");
// 派生属性不落库
builder.Ignore(e => e.Margin);
// 索引
builder.HasIndex(e => e.ScenarioId).HasDatabaseName("idx_ploss_scenario");
2026-07-03 18:06:01 +08:00
builder.HasIndex(e => e.Field2).HasDatabaseName("idx_ploss_field_2"); // 原 rx_power
builder.HasIndex(e => e.Field7).HasDatabaseName("idx_ploss_field_7"); // 原 ploss
builder.HasIndex(e => e.Field8).HasDatabaseName("idx_ploss_field_8"); // 原 threshold
builder.HasIndex(e => e.Field10).HasDatabaseName("idx_ploss_field_10"); // 原 fod_result
builder.HasIndex(e => e.PowLoss).HasDatabaseName("idx_ploss_pow_loss"); // 新增
builder.HasIndex(e => e.DeltaP).HasDatabaseName("idx_ploss_delta_p"); // 新增
// 关系配置
builder.HasOne(e => e.Scenario)
.WithMany(e => e.PlossRecords)
.HasForeignKey(e => e.ScenarioId)
.OnDelete(DeleteBehavior.Cascade);
// 全局查询过滤器
builder.HasQueryFilter(e => !e.IsDeleted);
}
}