57 lines
2.5 KiB
C#
57 lines
2.5 KiB
C#
using IRaCIS.Core.Domain.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
|
|
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)
|
|
{
|
|
builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId);
|
|
|
|
//builder.HasOne(t => t.Doctor).WithOne(t => t.User);
|
|
}
|
|
}
|
|
}
|