51 lines
2.0 KiB
C#
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 记录也级联删除
|
|
}
|
|
}
|
|
}
|