2026-07-02 18:13:56 +08:00
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
2026-07-03 10:47:27 +08:00
|
|
|
using WCTDataMiner.Core.Models;
|
2026-07-02 18:13:56 +08:00
|
|
|
|
2026-07-03 10:47:27 +08:00
|
|
|
namespace WCTDataMiner.Core.Data.Configurations;
|
2026-07-02 18:13:56 +08:00
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.RxType)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("rx_type");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.RxPower)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("rx_power");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.TxPower)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("tx_power");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Vcoil)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("vcoil");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Vin)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("vin");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Isns)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("isns");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Ploss)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("ploss");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.Threshold)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("threshold");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.TriggerCount)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasDefaultValue(0)
|
|
|
|
|
.HasColumnName("trigger_count");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.FodResult)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasDefaultValue(0)
|
|
|
|
|
.HasColumnName("fod_result");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.ProtocolType)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("protocol_type");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.PwmDuty)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("pwm_duty");
|
|
|
|
|
|
|
|
|
|
builder.Property(e => e.CoilIndex)
|
|
|
|
|
.IsRequired()
|
|
|
|
|
.HasColumnName("coil_index");
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
builder.HasIndex(e => e.RxPower).HasDatabaseName("idx_ploss_rx_power");
|
|
|
|
|
builder.HasIndex(e => e.Ploss).HasDatabaseName("idx_ploss_ploss");
|
|
|
|
|
builder.HasIndex(e => e.Threshold).HasDatabaseName("idx_ploss_threshold");
|
|
|
|
|
builder.HasIndex(e => e.FodResult).HasDatabaseName("idx_ploss_fod_result");
|
|
|
|
|
|
|
|
|
|
// 关系配置
|
|
|
|
|
builder.HasOne(e => e.Scenario)
|
|
|
|
|
.WithMany(e => e.PlossRecords)
|
|
|
|
|
.HasForeignKey(e => e.ScenarioId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
// 全局查询过滤器
|
|
|
|
|
builder.HasQueryFilter(e => !e.IsDeleted);
|
|
|
|
|
}
|
|
|
|
|
}
|