using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace YBEE.EQM.Core;
///
/// 监测学生
///
[Comment("监测样本学生")]
public class ExamStudent : DEntityBase, IEntityTypeBuilder
{
///
/// 监测计划ID
///
[Comment("监测计划ID")]
[Required]
public int ExamPlanId { get; set; }
///
/// 机构ID
///
[Comment("机构ID")]
[Required]
public short SysOrgId { get; set; }
///
/// 校区ID
///
[Comment("校区ID")]
public short? SysOrgBranchId { get; set; }
///
/// 监测年级ID
///
[Comment("监测年级ID")]
[Required]
public int ExamGradeId { get; set; }
///
/// 年级ID
///
[Comment("年级ID")]
[Required]
public short GradeId { get; set; }
///
/// 班级ID
///
[Comment("班级ID")]
[Required]
public long SchoolClassId { get; set; }
///
/// 班号
///
[Comment("班号")]
[Required]
public short ClassNumber { get; set; }
/////
///// 班级学生ID
/////
//[Comment("班级学生ID")]
//[Required]
//public int SchoolClassStudentId { get; set; }
/////
///// 学生信息ID
/////
//[Comment("学生信息ID")]
//[Required]
//public int PersonId { get; set; }
///
/// 高中选科组合ID
///
[Comment("高中选科组合ID")]
public short? CourseCombId { get; set; }
///
/// 自编监测号
///
[Comment("自编监测号")]
[StringLength(20)]
public string ExamNumber { get; set; } = "";
///
/// 学籍号
///
[Comment("学籍号")]
[StringLength(100)]
public string StudentNumber { get; set; } = "";
///
/// 考场号
///
[Comment("考场号")]
[StringLength(20)]
public string RoomNumber { get; set; } = "";
///
/// 座位号
///
[Comment("座位号")]
[StringLength(20)]
public string SeatNumber { get; set; } = "";
///
/// 姓名
///
[Comment("姓名")]
[Required, StringLength(100)]
public string Name { get; set; }
///
/// 证件类型
///
[Comment("证件类型")]
[Required, Column(TypeName = "smallint")]
public CertificateType CertificateType { get; set; } = CertificateType.NONE;
///
/// 证件号码
///
[Comment("证件号码")]
[StringLength(50)]
public string IdNumber { get; set; } = "";
///
/// 出生日期
///
[Comment("出生日期")]
public DateTime? BirthDate { get; set; }
///
/// 性别
///
[Comment("性别")]
[Required, Column(TypeName = "smallint")]
public Gender Gender { get; set; } = Gender.UNKNOWN;
///
/// 备注
///
[Comment("备注")]
[StringLength(200)]
public string Remark { get; set; }
///
/// 一对一引用(机构)
///
public virtual SysOrg SysOrg { get; set; }
///
/// 一对一引用(年级)
///
public virtual Grade Grade { get; set; }
///
/// 一对一引用(班级)
///
public virtual SchoolClass SchoolClass { get; set; }
///
/// 一对一引用(校区)
///
public virtual SysOrg SysOrgBranch { get; set; }
///
/// 一对一引用(监测年级)
///
public virtual ExamGrade ExamGrade { get; set; }
/////
///// 一对一引用(班级学生)
/////
//public virtual SchoolClassStudent SchoolClassStudent { get; set; }
/////
///// 一对一引用(学生信息)
/////
//public virtual Person Person { get; set; }
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder.HasIndex(a => new { a.ExamPlanId, a.SysOrgId }).HasDatabaseName("idx_exam_student_exam_plan_id_sys_org_id");
entityBuilder.HasIndex(a => new { a.ExamPlanId, a.SysOrgId, a.SchoolClassId }).HasDatabaseName("idx_exam_student_exam_plan_id_soid_scid");
}
}