C# Fluent nHibernate中作为外键映射的多重复合主键引用
这是一个遗留表结构,因此不可能修改模式C# Fluent nHibernate中作为外键映射的多重复合主键引用,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,这是一个遗留表结构,因此不可能修改模式 Patient ------- Code - PK HospitalCode - PK - FK with Hospital.Code HospitalGroup - PK - FK with Hospital.HospitalGroup Other fields Hospital ------- Code - PK HospitalGroup - PK - FK with HospitalGroup.Code Other fields Departm
Patient
-------
Code - PK
HospitalCode - PK - FK with Hospital.Code
HospitalGroup - PK - FK with Hospital.HospitalGroup
Other fields
Hospital
-------
Code - PK
HospitalGroup - PK - FK with HospitalGroup.Code
Other fields
Department
-------
Code - PK
HospitalCode - PK - FK with Hospital.Code
HospitalGroup - PK - FK with HospitalGroup.Code
Other fields
Diagnose
-------
PatientCode - PK - FK with Patient.Code
HospitalCode - PK - FK with Hospital.Code
HospitalGroup - PK - FK with Hospital.HospitalGroup
DepartmentCode - PK - FK with Department.Code
Other fields
映射如下所示
public class PatientMap : ClassMap<Patient>
{
public PatientMap()
{
CompositeId()
.KeyProperty(x => x.Id, "ID")
.KeyReference(x => x.Hospital, "Hospital_id", "HospitalGroup_id")
.KeyReference(x => x.HospitalGroup, "HospitalGroup_id");
Map(x => x.Name);
}
}
public class HospitalMap : ClassMap<Hospital>
{
public HospitalMap()
{
CompositeId()
.KeyProperty(x => x.Id, "ID")
.KeyReference(x => x.HospitalGroup, "HospitalGroup_id");
Map(x => x.Name);
}
}
public class HospitalGroupMap : ClassMap<HospitalGroup>
{
public HospitalGroupMap()
{
Id(x => x.Id).Column("ID");
Map(x => x.Name);
}
}
public class DepartmentMap : ClassMap<Department>
{
public DepartmentMap()
{
CompositeId()
.KeyProperty(x => x.Id, "ID")
.KeyReference(x => x.Hospital, "Hospital_id", "HospitalGroup_id")
.KeyReference(x => x.HospitalGroup, "HospitalGroup_id");
Map(x => x.Name);
}
}
public class DiagnoseMap : ClassMap<Diagnose>
{
public DiagnoseMap()
{
CompositeId()
//.KeyReference(x => x.Hospital, "Hospital_id", "HospitalGroup_id")
//.KeyReference(x => x.HospitalGroup, "HospitalGroup_id")
.KeyReference(x => x.Department, "Department_id", "Hospital_id", "HospitalGroup_id")
.KeyReference(x => x.Patient, "Patient_id", "Hospital_id", "HospitalGroup_id");
}
}
目前我得到以下异常
"identifier mapping has wrong number of columns: Examples.FirstProject.Entities.Diagnose type: component[Department,Patient]"
我也面临同样的问题。你找到解决方案了吗?我在复合pk中尝试了原语值。i、 e.KeyProperty而不是KeyReference和实际对象,如科室、患者作为参考。请将映射发布在此处好吗?
"identifier mapping has wrong number of columns: Examples.FirstProject.Entities.Diagnose type: component[Department,Patient]"