Entity Framework 一对多关系流利 API 具有复合键
Entity Framework One to Many Relations ship Fluent API with composite keys
以下是我正在使用的 classes。我想创建一个从 Stratification 到 PatientClientPhysician 的单向参考。如果 Entity Framework 需要,我也可以建立一对多关系,但即使这是一个链接器 table.
,它也始终是 1-1
我必须为此 ClientId、PatientId、PhysicianId 使用复合键。我不断收到的错误是。
One or more validation errors were detected during model generation:
SPM.Data.Stratification_Physician: : Multiplicity conflicts with the referential constraint in Role 'Stratification_Physician_Target' in relationship 'Stratification_Physician'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
Stratification_PrimaryPhysician_Target_Stratification_PrimaryPhysician_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical.
PatientClientPhysician_Stratifications_Target_PatientClientPhysician_Stratifications_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical.
正确的流利度是什么api?
如果可能的话,我真的很想通过 PatientClientPhysician class 直接找到 Physician。
谢谢
public class PatientClientPhysician : BaseEntity
{
public Guid ClientId { get; set; }
public Guid PatientId { get; set; }
public Guid PhysicianId { get; set; }
public virtual Client Client { get; set; }
public virtual Patient Patient { get; set; }
public virtual Physician Physician { get; set; }
public PatientClientPhysician()
: base()
{
}
}
public class PatientClientPhysicianConfiguration :
EntityConfigurationBase<PatientClientPhysician>
{
public PatientClientPhysicianConfiguration()
{
ToTable("patientclientphysician");
//Property(m => m.Id).HasColumnName("id");
Property(m => m.ClientId).HasColumnName("clientid");
Property(m => m.PatientId).HasColumnName("patientid");
Property(m => m.PhysicianId).HasColumnName("physicianid");
HasRequired(m => m.Patient).WithMany().HasForeignKey(p => p.PatientId);
HasRequired(m => m.Client).WithMany().HasForeignKey(c => c.ClientId);
HasRequired(m => m.Physician).WithMany().HasForeignKey(p => p.PhysicianId);
}
}
public class Stratification : BaseEntity
{
public Stratification()
{
LabOrders = new List<StratLabOrder>();
Observations = new List<StratObs>();
Contacts = new List<StratContact>();
StratIcd9s = new List<StratIcd9>();
}
public Guid ClientLocationId { get; set; }
public Guid PatientId { get; set; }
public Guid StratInputId { get; set; }
public Guid ClientId { get; set; }
public Guid PhysicianId { get; set; }
public virtual ClientLocation ClientLocation { get; set; }
public virtual Patient Patient { get; set; }
public virtual StratInput StratInput { get; set; }
public string EpisodeNumber { get; set; }
public virtual Physician Physician { get; set; }
public PrintStatus LetterPrintStatus { get; set; }
public virtual ICollection<StratLabOrder> LabOrders { get; set; }
public virtual ICollection<StratObs> Observations { get; set; }
public virtual ICollection<StratContact> Contacts { get; set; }
public virtual ICollection<StratIcd9> StratIcd9s { get; set; }
public virtual PatientClientPhysician PrimaryPhysician { get; set; }
}
//this is in EntityConfigurationBase<Stratification> class
HasRequired(m => m.PrimaryPhysician).WithRequired().HasForeignKey(p => new { p.ClientId, p.PatientId, p.PhysicianId });
编辑 1
我加了
HasKey(t => new { t.ClientId, t.PatientId, t.PhysicianId });
到 PatientClientPhysicianConfiguration class 并得到这个错误。
One or more validation errors were detected during model generation:
SPM.Data.Stratification_Physician: : Multiplicity conflicts with the referential constraint in Role 'Stratification_Physician_Target' in relationship 'Stratification_Physician'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
这就是我现在设置的关系。
HasRequired(m => m.PatientClientPhysicians).WithMany().HasForeignKey(p => new { p.ClientId, p.PatientId, p.PhysicianId });
试试这个:
public class PatientClientPhysicianConfiguration :
EntityConfigurationBase<PatientClientPhysician>
{
public PatientClientPhysicianConfiguration()
{
ToTable("patientclientphysician");
// Composite key:
HasKey(t => new { t.ClientId, t.PatientId, t.PhysicianId });
Property(m => m.ClientId).HasColumnName("clientid");
Property(m => m.PatientId).HasColumnName("patientid");
Property(m => m.PhysicianId).HasColumnName("physicianid");
HasRequired(m => m.Patient).WithMany().HasForeignKey(p => p.PatientId);
HasRequired(m => m.Client).WithMany().HasForeignKey(c => c.ClientId);
HasRequired(m => m.Physician).WithMany().HasForeignKey(p => p.PhysicianId);
}
}
以下是我正在使用的 classes。我想创建一个从 Stratification 到 PatientClientPhysician 的单向参考。如果 Entity Framework 需要,我也可以建立一对多关系,但即使这是一个链接器 table.
,它也始终是 1-1我必须为此 ClientId、PatientId、PhysicianId 使用复合键。我不断收到的错误是。
One or more validation errors were detected during model generation:
SPM.Data.Stratification_Physician: : Multiplicity conflicts with the referential constraint in Role 'Stratification_Physician_Target' in relationship 'Stratification_Physician'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
Stratification_PrimaryPhysician_Target_Stratification_PrimaryPhysician_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical.
PatientClientPhysician_Stratifications_Target_PatientClientPhysician_Stratifications_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical.
正确的流利度是什么api?
如果可能的话,我真的很想通过 PatientClientPhysician class 直接找到 Physician。
谢谢
public class PatientClientPhysician : BaseEntity
{
public Guid ClientId { get; set; }
public Guid PatientId { get; set; }
public Guid PhysicianId { get; set; }
public virtual Client Client { get; set; }
public virtual Patient Patient { get; set; }
public virtual Physician Physician { get; set; }
public PatientClientPhysician()
: base()
{
}
}
public class PatientClientPhysicianConfiguration :
EntityConfigurationBase<PatientClientPhysician>
{
public PatientClientPhysicianConfiguration()
{
ToTable("patientclientphysician");
//Property(m => m.Id).HasColumnName("id");
Property(m => m.ClientId).HasColumnName("clientid");
Property(m => m.PatientId).HasColumnName("patientid");
Property(m => m.PhysicianId).HasColumnName("physicianid");
HasRequired(m => m.Patient).WithMany().HasForeignKey(p => p.PatientId);
HasRequired(m => m.Client).WithMany().HasForeignKey(c => c.ClientId);
HasRequired(m => m.Physician).WithMany().HasForeignKey(p => p.PhysicianId);
}
}
public class Stratification : BaseEntity
{
public Stratification()
{
LabOrders = new List<StratLabOrder>();
Observations = new List<StratObs>();
Contacts = new List<StratContact>();
StratIcd9s = new List<StratIcd9>();
}
public Guid ClientLocationId { get; set; }
public Guid PatientId { get; set; }
public Guid StratInputId { get; set; }
public Guid ClientId { get; set; }
public Guid PhysicianId { get; set; }
public virtual ClientLocation ClientLocation { get; set; }
public virtual Patient Patient { get; set; }
public virtual StratInput StratInput { get; set; }
public string EpisodeNumber { get; set; }
public virtual Physician Physician { get; set; }
public PrintStatus LetterPrintStatus { get; set; }
public virtual ICollection<StratLabOrder> LabOrders { get; set; }
public virtual ICollection<StratObs> Observations { get; set; }
public virtual ICollection<StratContact> Contacts { get; set; }
public virtual ICollection<StratIcd9> StratIcd9s { get; set; }
public virtual PatientClientPhysician PrimaryPhysician { get; set; }
}
//this is in EntityConfigurationBase<Stratification> class
HasRequired(m => m.PrimaryPhysician).WithRequired().HasForeignKey(p => new { p.ClientId, p.PatientId, p.PhysicianId });
编辑 1
我加了
HasKey(t => new { t.ClientId, t.PatientId, t.PhysicianId });
到 PatientClientPhysicianConfiguration class 并得到这个错误。
One or more validation errors were detected during model generation:
SPM.Data.Stratification_Physician: : Multiplicity conflicts with the referential constraint in Role 'Stratification_Physician_Target' in relationship 'Stratification_Physician'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
这就是我现在设置的关系。
HasRequired(m => m.PatientClientPhysicians).WithMany().HasForeignKey(p => new { p.ClientId, p.PatientId, p.PhysicianId });
试试这个:
public class PatientClientPhysicianConfiguration :
EntityConfigurationBase<PatientClientPhysician>
{
public PatientClientPhysicianConfiguration()
{
ToTable("patientclientphysician");
// Composite key:
HasKey(t => new { t.ClientId, t.PatientId, t.PhysicianId });
Property(m => m.ClientId).HasColumnName("clientid");
Property(m => m.PatientId).HasColumnName("patientid");
Property(m => m.PhysicianId).HasColumnName("physicianid");
HasRequired(m => m.Patient).WithMany().HasForeignKey(p => p.PatientId);
HasRequired(m => m.Client).WithMany().HasForeignKey(c => c.ClientId);
HasRequired(m => m.Physician).WithMany().HasForeignKey(p => p.PhysicianId);
}
}