feat: AmineContentCalibration db fix warnings, remove tray table

This commit is contained in:
2026-02-27 12:32:24 +03:00
parent 79dc2274be
commit c010b0ab6a
8 changed files with 146 additions and 159 deletions
@@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GSS2.Core.Analysis.AmineContent.Database.Calibration namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
{ {
[DbContext(typeof(AmineContentCalibrationContext))] [DbContext(typeof(AmineContentCalibrationContext))]
[Migration("20260227055810_AmineContentCalibrationInitial")] [Migration("20260227093032_AmineContentCalibrationInitial")]
partial class AmineContentCalibrationInitial partial class AmineContentCalibrationInitial
{ {
/// <inheritdoc /> /// <inheritdoc />
@@ -20,6 +20,21 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
#pragma warning disable 612, 618 #pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "10.0.0"); modelBuilder.HasAnnotation("ProductVersion", "10.0.0");
modelBuilder.Entity("CalibrationSeparatorImage", b =>
{
b.Property<int>("CalibrationRecordId")
.HasColumnType("INTEGER");
b.Property<int>("ImageRecordId")
.HasColumnType("INTEGER");
b.HasKey("CalibrationRecordId", "ImageRecordId");
b.HasIndex("ImageRecordId");
b.ToTable("CalibrationSeparatorImages", (string)null);
});
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
@@ -84,10 +99,7 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
.HasColumnType("INTEGER") .HasColumnType("INTEGER")
.HasComment("Уникальный идентификатор"); .HasComment("Уникальный идентификатор");
b.Property<int?>("CalibrationRecordId") b.Property<int?>("CalibrationSampleId")
.HasColumnType("INTEGER");
b.Property<int?>("CalibrationRecordId1")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("ImagePath") b.Property<string>("ImagePath")
@@ -99,9 +111,6 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.Property<int?>("SeparatorRecordId") b.Property<int?>("SeparatorRecordId")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int?>("TrayRecordId")
.HasColumnType("INTEGER");
b.Property<double>("Uv254Intensity") b.Property<double>("Uv254Intensity")
.HasColumnType("REAL") .HasColumnType("REAL")
.HasComment("Интенсивность УФ излучения 254 нм (0..1)"); .HasComment("Интенсивность УФ излучения 254 нм (0..1)");
@@ -116,14 +125,10 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("CalibrationRecordId"); b.HasIndex("CalibrationSampleId");
b.HasIndex("CalibrationRecordId1");
b.HasIndex("SeparatorRecordId"); b.HasIndex("SeparatorRecordId");
b.HasIndex("TrayRecordId");
b.ToTable("ImageRecords"); b.ToTable("ImageRecords");
}); });
@@ -151,57 +156,47 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.ToTable("SeparatorRecords"); b.ToTable("SeparatorRecords");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", b => modelBuilder.Entity("CalibrationSeparatorImage", b =>
{ {
b.Property<int>("Id") b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null)
.ValueGeneratedOnAdd() .WithMany()
.HasColumnType("INTEGER") .HasForeignKey("CalibrationRecordId")
.HasComment("Уникальный идентификатор"); .OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasKey("Id"); b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", null)
.WithMany()
b.ToTable("TrayRecords"); .HasForeignKey("ImageRecordId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", b =>
{ {
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null) b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", "CalibrationSample")
.WithMany("SampleImages") .WithMany("SampleImages")
.HasForeignKey("CalibrationRecordId") .HasForeignKey("CalibrationSampleId")
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null) b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", "Separator")
.WithMany("SeparatorImages")
.HasForeignKey("CalibrationRecordId1")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", null)
.WithMany("Images") .WithMany("Images")
.HasForeignKey("SeparatorRecordId") .HasForeignKey("SeparatorRecordId")
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", null) b.Navigation("CalibrationSample");
.WithMany("Images")
.HasForeignKey("TrayRecordId") b.Navigation("Separator");
.OnDelete(DeleteBehavior.Cascade);
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b =>
{ {
b.Navigation("SampleImages"); b.Navigation("SampleImages");
b.Navigation("SeparatorImages");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", b =>
{ {
b.Navigation("Images"); b.Navigation("Images");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", b =>
{
b.Navigation("Images");
});
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }
} }
@@ -47,18 +47,6 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
table.PrimaryKey("PK_SeparatorRecords", x => x.Id); table.PrimaryKey("PK_SeparatorRecords", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "TrayRecords",
columns: table => new
{
Id = table.Column<int>(type: "INTEGER", nullable: false, comment: "Уникальный идентификатор")
.Annotation("Sqlite:Autoincrement", true)
},
constraints: table =>
{
table.PrimaryKey("PK_TrayRecords", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "ImageRecords", name: "ImageRecords",
columns: table => new columns: table => new
@@ -69,23 +57,15 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
Uv365Intensity = table.Column<double>(type: "REAL", nullable: false, comment: "Интенсивность УФ излучения 365 нм (0..1)"), Uv365Intensity = table.Column<double>(type: "REAL", nullable: false, comment: "Интенсивность УФ излучения 365 нм (0..1)"),
Uv254Intensity = table.Column<double>(type: "REAL", nullable: false, comment: "Интенсивность УФ излучения 254 нм (0..1)"), Uv254Intensity = table.Column<double>(type: "REAL", nullable: false, comment: "Интенсивность УФ излучения 254 нм (0..1)"),
ImagePath = table.Column<string>(type: "TEXT", maxLength: 1024, nullable: false, comment: "Путь к файлу изображения"), ImagePath = table.Column<string>(type: "TEXT", maxLength: 1024, nullable: false, comment: "Путь к файлу изображения"),
CalibrationRecordId = table.Column<int>(type: "INTEGER", nullable: true),
CalibrationRecordId1 = table.Column<int>(type: "INTEGER", nullable: true),
SeparatorRecordId = table.Column<int>(type: "INTEGER", nullable: true), SeparatorRecordId = table.Column<int>(type: "INTEGER", nullable: true),
TrayRecordId = table.Column<int>(type: "INTEGER", nullable: true) CalibrationSampleId = table.Column<int>(type: "INTEGER", nullable: true)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_ImageRecords", x => x.Id); table.PrimaryKey("PK_ImageRecords", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_ImageRecords_CalibrationRecords_CalibrationRecordId", name: "FK_ImageRecords_CalibrationRecords_CalibrationSampleId",
column: x => x.CalibrationRecordId, column: x => x.CalibrationSampleId,
principalTable: "CalibrationRecords",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ImageRecords_CalibrationRecords_CalibrationRecordId1",
column: x => x.CalibrationRecordId1,
principalTable: "CalibrationRecords", principalTable: "CalibrationRecords",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
@@ -95,38 +75,54 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
principalTable: "SeparatorRecords", principalTable: "SeparatorRecords",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "CalibrationSeparatorImages",
columns: table => new
{
CalibrationRecordId = table.Column<int>(type: "INTEGER", nullable: false),
ImageRecordId = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_CalibrationSeparatorImages", x => new { x.CalibrationRecordId, x.ImageRecordId });
table.ForeignKey( table.ForeignKey(
name: "FK_ImageRecords_TrayRecords_TrayRecordId", name: "FK_CalibrationSeparatorImages_CalibrationRecords_CalibrationRecordId",
column: x => x.TrayRecordId, column: x => x.CalibrationRecordId,
principalTable: "TrayRecords", principalTable: "CalibrationRecords",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_CalibrationSeparatorImages_ImageRecords_ImageRecordId",
column: x => x.ImageRecordId,
principalTable: "ImageRecords",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_ImageRecords_CalibrationRecordId", name: "IX_CalibrationSeparatorImages_ImageRecordId",
table: "ImageRecords", table: "CalibrationSeparatorImages",
column: "CalibrationRecordId"); column: "ImageRecordId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_ImageRecords_CalibrationRecordId1", name: "IX_ImageRecords_CalibrationSampleId",
table: "ImageRecords", table: "ImageRecords",
column: "CalibrationRecordId1"); column: "CalibrationSampleId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_ImageRecords_SeparatorRecordId", name: "IX_ImageRecords_SeparatorRecordId",
table: "ImageRecords", table: "ImageRecords",
column: "SeparatorRecordId"); column: "SeparatorRecordId");
migrationBuilder.CreateIndex(
name: "IX_ImageRecords_TrayRecordId",
table: "ImageRecords",
column: "TrayRecordId");
} }
/// <inheritdoc /> /// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder)
{ {
migrationBuilder.DropTable(
name: "CalibrationSeparatorImages");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "ImageRecords"); name: "ImageRecords");
@@ -135,9 +131,6 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "SeparatorRecords"); name: "SeparatorRecords");
migrationBuilder.DropTable(
name: "TrayRecords");
} }
} }
} }
@@ -4,9 +4,7 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration;
public class AmineContentCalibrationContext : DbContext public class AmineContentCalibrationContext : DbContext
{ {
public DbSet<ImageRecord> ImageRecords => Set<ImageRecord>(); public DbSet<ImageRecord> ImageRecords => Set<ImageRecord>();
public DbSet<TrayRecord> TrayRecords => Set<TrayRecord>();
public DbSet<SeparatorRecord> SeparatorRecords => Set<SeparatorRecord>(); public DbSet<SeparatorRecord> SeparatorRecords => Set<SeparatorRecord>();
public DbSet<CalibrationRecord> CalibrationRecords => Set<CalibrationRecord>(); public DbSet<CalibrationRecord> CalibrationRecords => Set<CalibrationRecord>();
@@ -21,55 +19,62 @@ public class AmineContentCalibrationContext : DbContext
modelBuilder.Entity<ImageRecord>(entity => modelBuilder.Entity<ImageRecord>(entity =>
{ {
entity.HasKey(x => x.Id); entity.HasKey(x => x.Id);
entity.Property(x => x.ImagePath) entity.Property(x => x.ImagePath)
.IsRequired() .IsRequired()
.HasMaxLength(1024); .HasMaxLength(1024);
}); });
modelBuilder.Entity<TrayRecord>(entity =>
{
entity.HasKey(x => x.Id);
entity.HasMany(x => x.Images)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<SeparatorRecord>(entity => modelBuilder.Entity<SeparatorRecord>(entity =>
{ {
entity.HasKey(x => x.Id); entity.HasKey(x => x.Id);
entity.HasMany(x => x.Images)
.WithOne(x => x.Separator)
.HasForeignKey(x => x.SeparatorRecordId)
.OnDelete(DeleteBehavior.Cascade);
entity.Property(x => x.Type) entity.Property(x => x.Type)
.IsRequired() .IsRequired()
.HasMaxLength(256); .HasMaxLength(256);
entity.Property(x => x.Batch) entity.Property(x => x.Batch)
.IsRequired() .IsRequired()
.HasMaxLength(256); .HasMaxLength(256);
entity.HasMany(x => x.Images)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
}); });
modelBuilder.Entity<CalibrationRecord>(entity => modelBuilder.Entity<CalibrationRecord>(entity =>
{ {
entity.HasKey(x => x.Id); entity.HasKey(x => x.Id);
entity.Property(x => x.SampleName).HasMaxLength(512);
entity.Property(x => x.SampleComment).HasMaxLength(2048);
entity.Property(x => x.SampleBrand).HasMaxLength(512);
entity.Property(x => x.SamplingPlace).HasMaxLength(512);
entity.Property(x => x.MixtureName).HasMaxLength(512);
entity.HasMany(x => x.SampleImages) entity.HasMany(x => x.SampleImages)
.WithOne() .WithOne(x => x.CalibrationSample)
.HasForeignKey(x => x.CalibrationSampleId)
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
entity.HasMany(x => x.SeparatorImages) entity.HasMany(x => x.SeparatorImages)
.WithOne() .WithMany(x => x.UsedInCalibrations)
.OnDelete(DeleteBehavior.Cascade); .UsingEntity<Dictionary<string, object>>(
"CalibrationSeparatorImage",
j => j
.HasOne<ImageRecord>()
.WithMany()
.HasForeignKey("ImageRecordId")
.OnDelete(DeleteBehavior.Cascade),
j => j
.HasOne<CalibrationRecord>()
.WithMany()
.HasForeignKey("CalibrationRecordId")
.OnDelete(DeleteBehavior.Cascade),
j =>
{
j.HasKey("CalibrationRecordId", "ImageRecordId");
j.ToTable("CalibrationSeparatorImages");
});
entity.Property(x => x.SampleName)
.HasMaxLength(512);
entity.Property(x => x.SampleComment)
.HasMaxLength(2048);
entity.Property(x => x.SampleBrand)
.HasMaxLength(512);
entity.Property(x => x.SamplingPlace)
.HasMaxLength(512);
entity.Property(x => x.MixtureName)
.HasMaxLength(512);
}); });
} }
} }
@@ -17,6 +17,21 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
#pragma warning disable 612, 618 #pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "10.0.0"); modelBuilder.HasAnnotation("ProductVersion", "10.0.0");
modelBuilder.Entity("CalibrationSeparatorImage", b =>
{
b.Property<int>("CalibrationRecordId")
.HasColumnType("INTEGER");
b.Property<int>("ImageRecordId")
.HasColumnType("INTEGER");
b.HasKey("CalibrationRecordId", "ImageRecordId");
b.HasIndex("ImageRecordId");
b.ToTable("CalibrationSeparatorImages", (string)null);
});
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
@@ -81,10 +96,7 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
.HasColumnType("INTEGER") .HasColumnType("INTEGER")
.HasComment("Уникальный идентификатор"); .HasComment("Уникальный идентификатор");
b.Property<int?>("CalibrationRecordId") b.Property<int?>("CalibrationSampleId")
.HasColumnType("INTEGER");
b.Property<int?>("CalibrationRecordId1")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("ImagePath") b.Property<string>("ImagePath")
@@ -96,9 +108,6 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.Property<int?>("SeparatorRecordId") b.Property<int?>("SeparatorRecordId")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int?>("TrayRecordId")
.HasColumnType("INTEGER");
b.Property<double>("Uv254Intensity") b.Property<double>("Uv254Intensity")
.HasColumnType("REAL") .HasColumnType("REAL")
.HasComment("Интенсивность УФ излучения 254 нм (0..1)"); .HasComment("Интенсивность УФ излучения 254 нм (0..1)");
@@ -113,14 +122,10 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("CalibrationRecordId"); b.HasIndex("CalibrationSampleId");
b.HasIndex("CalibrationRecordId1");
b.HasIndex("SeparatorRecordId"); b.HasIndex("SeparatorRecordId");
b.HasIndex("TrayRecordId");
b.ToTable("ImageRecords"); b.ToTable("ImageRecords");
}); });
@@ -148,57 +153,47 @@ namespace GSS2.Core.Analysis.AmineContent.Database.Calibration
b.ToTable("SeparatorRecords"); b.ToTable("SeparatorRecords");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", b => modelBuilder.Entity("CalibrationSeparatorImage", b =>
{ {
b.Property<int>("Id") b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null)
.ValueGeneratedOnAdd() .WithMany()
.HasColumnType("INTEGER") .HasForeignKey("CalibrationRecordId")
.HasComment("Уникальный идентификатор"); .OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasKey("Id"); b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", null)
.WithMany()
b.ToTable("TrayRecords"); .HasForeignKey("ImageRecordId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.ImageRecord", b =>
{ {
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null) b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", "CalibrationSample")
.WithMany("SampleImages") .WithMany("SampleImages")
.HasForeignKey("CalibrationRecordId") .HasForeignKey("CalibrationSampleId")
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", null) b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", "Separator")
.WithMany("SeparatorImages")
.HasForeignKey("CalibrationRecordId1")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", null)
.WithMany("Images") .WithMany("Images")
.HasForeignKey("SeparatorRecordId") .HasForeignKey("SeparatorRecordId")
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
b.HasOne("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", null) b.Navigation("CalibrationSample");
.WithMany("Images")
.HasForeignKey("TrayRecordId") b.Navigation("Separator");
.OnDelete(DeleteBehavior.Cascade);
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.CalibrationRecord", b =>
{ {
b.Navigation("SampleImages"); b.Navigation("SampleImages");
b.Navigation("SeparatorImages");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", b => modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.SeparatorRecord", b =>
{ {
b.Navigation("Images"); b.Navigation("Images");
}); });
modelBuilder.Entity("GSS2.Core.Analysis.AmineContent.Database.Calibration.TrayRecord", b =>
{
b.Navigation("Images");
});
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }
} }
@@ -14,4 +14,14 @@ public record ImageRecord
public required double Uv254Intensity { get; init; } public required double Uv254Intensity { get; init; }
[Comment("Путь к файлу изображения")] [Comment("Путь к файлу изображения")]
public required string ImagePath { get; init; } public required string ImagePath { get; init; }
// 1:N
public int? SeparatorRecordId { get; set; }
public SeparatorRecord? Separator { get; set; }
public int? CalibrationSampleId { get; set; }
public CalibrationRecord? CalibrationSample { get; set; }
// M:N
public List<CalibrationRecord> UsedInCalibrations { get; set; } = new();
} }
@@ -1,11 +0,0 @@
using Microsoft.EntityFrameworkCore;
namespace GSS2.Core.Analysis.AmineContent.Database.Calibration;
public record TrayRecord
{
[Comment("Уникальный идентификатор")]
public int Id { get; set; }
[Comment("Изображения лотка")]
public required List<ImageRecord> Images { get; init; }
}
@@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GSS2.Core.Analysis.AmineContent.Database.Results namespace GSS2.Core.Analysis.AmineContent.Database.Results
{ {
[DbContext(typeof(AmineContentResultsContext))] [DbContext(typeof(AmineContentResultsContext))]
[Migration("20260227055822_AmineContentResultsInitial")] [Migration("20260227093041_AmineContentResultsInitial")]
partial class AmineContentResultsInitial partial class AmineContentResultsInitial
{ {
/// <inheritdoc /> /// <inheritdoc />