我有一個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
表中的現有患者相關聯?