Files
TechHelper/TechHelper.Server/Context/Configuration/AssignmentClassConfiguration.cs
SpecialX ac900159ba
Some checks failed
TechAct / explore-gitea-actions (push) Failing after 12s
重构项目结构,移除Assignment相关功能,优化Submission模块
2025-10-09 18:57:28 +08:00

51 lines
1.9 KiB
C#

using Entities.Contracts;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore;
namespace TechHelper.Context.Configuration
{
public class AssignmentClassConfiguration : IEntityTypeConfiguration<ExamClass>
{
public void Configure(EntityTypeBuilder<ExamClass> builder)
{
// 设置表名为 "assignment_class"
builder.ToTable("assignment_class");
// 设置复合主键
builder.HasKey(ac => new { ac.ExamId, ac.ClassId });
// 配置 AssignmentId 列名
builder.Property(ac => ac.ExamId)
.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.Exam) // AssignmentClass 有一个 Assignment
.WithMany(a => a.AssignmentClasses) // Assignment 有多个 AssignmentClass 记录
.HasForeignKey(ac => ac.ExamId) // 通过 AssignmentId 建立外键
.OnDelete(DeleteBehavior.Cascade); // 当 Assignment 被删除时,相关的 AssignmentClass 记录也级联删除
// 配置到 Class 的关系 (多对一)
// 假设 Class 类中有一个名为 AssignmentClasses 的集合属性
builder.HasOne(ac => ac.Class) // AssignmentClass 有一个 Class
.WithMany(c => c.ExamClasses) // Class 有多个 AssignmentClass 记录
.HasForeignKey(ac => ac.ClassId) // 通过 ClassId 建立外键
.OnDelete(DeleteBehavior.Cascade); // 当 Class 被删除时,相关的 AssignmentClass 记录也级联删除
}
}
}