我有一个Patient
实体(存储有关患者的最新信息)和一个实体(与“治疗计划”相同的患者日期的副本,与另一个实体无关,创建):如何将新实体与EF4中的现有实体相关联?
我使用表每-Type在这种情况下。现在,当我尝试添加记录指向它从创建Patient
新TreatmentPlanPatient
,EF4实际上做这个:
- 它从数据库检索
- 现有患者创建一个病人副本
- 分配给它一个新的ID GUID(尽管StoreGeneratedPattern =无!)
- 插入新病人进入
Patients
表 - 重写ID在我
TreatmentPlanPatient
实例指向这个新的病人 - 将新的治疗计划患者插入
TreatmentPlanPatients
表格中。
这是我的代码导致上述行为:
using(var container = new SmartTherapyContainer()) {
// Look up the patient in the current container to make sure EF4 recognizes it
var patient = container.Patients.First(r => r.Id == selectedPatient.Id);
var treatmentPlanPatient = new TreatmentPlanPatient() {
Id = Guid.NewGuid(),
FirstName = patient.FirstName,
LastName = patient.LastName,
Street = patient.Street,
ZipCode = patient.ZipCode,
City = patient.City,
BirthDate = patient.BirthDate,
Telephone = patient.Telephone,
Email = patient.Email,
ClonedPatient = patient
};
// EF4 doesn't generate a separate .TreatmentPlanPatients collection :-/
container.Patients.AddObject(treatmentPlanPatient);
container.SaveChanges();
}
这是怎么回事?我如何才能让EF4将治疗计划患者插入TreatmentPlanPatients
表中,并将其与Patients
表中的现有患者相关联?