using IRaCIS.Core.Domain.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace IRaCIS.Core.Infra.EFCore.EntityConfigration { public class SubjectConfigration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { // 从 Subject 到 TrialSiteUserList 会用两个建 //builder //.HasMany(s => s.TrialSiteUserList) //.WithOne(c => c.Subject) //.HasForeignKey(s => new { s.TrialId, s.SiteId }) //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); // 受试者 在项目中只有一个site 获取 TrialSiteCode 用两个键 builder .HasOne(s => s.TrialSite) .WithMany(c => c.SubjectList) .HasForeignKey(s => new { s.TrialId, s.SiteId }) .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); //不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置 builder.HasOne(s => s.LatestSubjectVisit); builder.HasOne(s => s.FinalSubjectVisit); builder.HasMany(s => s.SubjectVisitList).WithOne(sv => sv.Subject); } } }