实体框架 - 哪些对象创建关系是否重要?

时间:2014-05-19 18:47:24

标签: entity-framework entity-framework-6

假设我有一个数据库,通过三张桌子将患者与医生联系起来。第三个表是关系表。

DoctorId    DoctorName
------------------------
1           Dr. Jones
2           Dr. Smith

PatientId   PatientName
------------------------
1           Tom Jones
2           Jerry Lewis

DoctorID    PatientID
------------------------
1           1
2           1
2           2

使用实体框架,我可能会执行以下操作......

示例#1

using (var dbContext = New MyAppDBConectContainer())
{
  var patient1 = new Patient {PatientName = "Tom Jones"};
  var doctor1 = new Doctor {DoctorName = "Dr. Jones"};
  doctor1.Patients.Add(patient1);
  dbContext.Doctors.Add(doctor1);
  dbContext.SubmitChanges();
}

示例#2

using (var dbContext = New MyAppDBConectContainer())
{
  var doctor1 = new Doctor {DoctorName = "Dr. Smith"};
  var patient1 = new Patient {PatientName = "Jerry Lewis"};
  patient1.Doctors.Add(doctor1);
  dbContext.Patients.Add(patient1);
  dbContext.SubmitChanges();
}

如果您按照实施例#1将患者加入医生,或者如实施例#2那样将患者加入患者,是否重要?这种关系会被保留吗?

2 个答案:

答案 0 :(得分:2)

在两种情况下都是,关系将被保留。

答案 1 :(得分:2)

如果您已在医生实体上设置患者ICollection,并在患者实体上设置ICollection of Doctors,则实体框架会推断多对多关系,两种情况都会导致相同医生,患者和交接表中的条目。

如果您需要对创建的数据库表(例如名称和键)进行更多控制,则可以使用{HasMany()WithMany()Map()方法3}}