using Entities.Contracts; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore; namespace TechHelper.Context.Configuration { public class AssignmentClassConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { // 设置表名为 "assignment_class" builder.ToTable("assignment_class"); // 设置复合主键 builder.HasKey(ac => new { ac.AssignmentId, ac.ClassId }); // 配置 AssignmentId 列名 builder.Property(ac => ac.AssignmentId) .HasColumnName("assignment_id"); // 配置 ClassId 列名 builder.Property(ac => ac.ClassId) .HasColumnName("class_id"); // 配置 AssignedAt 列名 builder.Property(ac => ac.AssignedAt) .HasColumnName("assigned_at") .IsRequired(); // 通常时间字段不能为空 // 配置 IsDeleted 列名 builder.Property(ac => ac.IsDeleted) .HasColumnName("deleted") .HasDefaultValue(false); // 可以设置默认值,表示默认未删除 // 配置到 Assignment 的关系 (多对一) // 假设 Assignment 类中有一个名为 AssignmentClasses 的集合属性 builder.HasOne(ac => ac.Assignment) // AssignmentClass 有一个 Assignment .WithMany(a => a.AssignmentClasses) // Assignment 有多个 AssignmentClass 记录 .HasForeignKey(ac => ac.AssignmentId) // 通过 AssignmentId 建立外键 .OnDelete(DeleteBehavior.Cascade); // 当 Assignment 被删除时,相关的 AssignmentClass 记录也级联删除 // 配置到 Class 的关系 (多对一) // 假设 Class 类中有一个名为 AssignmentClasses 的集合属性 builder.HasOne(ac => ac.Class) // AssignmentClass 有一个 Class .WithMany(c => c.AssignmentClasses) // Class 有多个 AssignmentClass 记录 .HasForeignKey(ac => ac.ClassId) // 通过 ClassId 建立外键 .OnDelete(DeleteBehavior.Cascade); // 当 Class 被删除时,相关的 AssignmentClass 记录也级联删除 } } }