irc-netcore-api/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs

88 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using IRaCIS.Core.Domain.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System.Reflection.Emit;
namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
{
public class SubjectConfigration : IEntityTypeConfiguration<Subject>
{
public void Configure(EntityTypeBuilder<Subject> builder)
{
//不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置
builder.HasOne(s => s.LatestSubjectVisit).WithMany().HasForeignKey(t => t.LatestSubjectVisitId);
builder.HasOne(s => s.FinalSubjectVisit).WithMany().HasForeignKey(t => t.FinalSubjectVisitId);
builder.HasMany(s => s.SubjectVisitList).WithOne(sv => sv.Subject).HasForeignKey(t => t.SubjectId);
}
}
public class DictionaryConfigration : IEntityTypeConfiguration<Dictionary>
{
public void Configure(EntityTypeBuilder<Dictionary> builder)
{
//自身同时存在一对多 和一对一的关系,配置一对多的就可以,一对一 不用配置,有点奇怪
builder.HasMany(t => t.ChildList).WithOne(t => t.Parent).HasForeignKey(d => d.ParentId);
}
}
public class NoneDicomStudyConfigration : IEntityTypeConfiguration<NoneDicomStudy>
{
public void Configure(EntityTypeBuilder<NoneDicomStudy> builder)
{
//同样一个实体 有两个相同的类型的导航属性,需要手动配置
builder.HasMany(t => t.NoneDicomFileList).WithOne(s => s.NoneDicomStudy).HasForeignKey(t => t.NoneDicomStudyId);
builder.HasMany(t => t.TaskNoneDicomFileList).WithOne(s => s.OriginNoneDicomStudy).HasForeignKey(t => t.OriginNoneDicomStudyId);
}
}
public class SubjectUserConfigration : IEntityTypeConfiguration<SubjectUser>
{
public void Configure(EntityTypeBuilder<SubjectUser> builder)
{
//自身存在一对多的关系
//对于替换后的医生而言,关联多个之前的医生
builder.HasMany(t => t.EarlierSubjectUserList).WithOne(t => t.ReplacedSubjectUser).HasForeignKey(t => t.ReplacedSubjectUserId);
}
}
public class UserConfigration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
//User 和VisitTask 存在一对多的关系 这里不显式配置就报错why?
builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId);
//builder.HasOne(t => t.Doctor).WithOne(t => t.User);
}
}
public class SystemDocConfirmedUserConfigration : IEntityTypeConfiguration<SystemDocConfirmedUser>
{
public void Configure(EntityTypeBuilder<SystemDocConfirmedUser> builder)
{
//// 配置 CreateUser 关系
//builder.HasOne(s => s.CreateUser)
// .WithMany() // 假设 User 表没有对应的反向导航属性,如果有,填入属性名
// .HasForeignKey(s => s.CreateUserId);
////.OnDelete(DeleteBehavior.Restrict); // 可根据业务需求调整删除行为
// 配置 ConfirmUser 关系
builder.HasOne(s => s.ConfirmUser) // ConfirmUser
.WithMany(t => t.SystemDocConfirmedList)
.HasForeignKey(s => s.ConfirmUserId);
//.OnDelete(DeleteBehavior.Restrict);
}
}
public class TrialUserConfigration : IEntityTypeConfiguration<TrialUser>
{
public void Configure(EntityTypeBuilder<TrialUser> builder)
{
builder.HasOne(s => s.User)
.WithMany(t => t.UserTrials)
.HasForeignKey(s => s.UserId);
}
}
}