Files
TechHelper/TechHelper.Server/Context/Configuration/AssignmentClassConfiguration.cs
2025-05-23 19:03:00 +08:00

51 lines
2.0 KiB
C#

using Entities.Contracts;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore;
namespace TechHelper.Context.Configuration
{
public class AssignmentClassConfiguration : IEntityTypeConfiguration<AssignmentClass>
{
public void Configure(EntityTypeBuilder<AssignmentClass> 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 记录也级联删除
}
}
}