在我的情况下,我有一个WinForm
项目和一个服务器(使用EF)。有两个实体(Doctor
& Clinic
)具有多对多关系,如:
public class Doctor
{
public Int64 ID { get; set; }
public virtual ICollection<Clinic> clinics { get; set; }
// And some others
}
public class Clinic
{
public Int64 ID { get; set; }
public virtual ICollection<Doctor> doctors { get; set; }
//And some others
}
当医生想要注册这个系统时,他/她只能注册一个诊所,签名后,他/她可以注册另一个诊所。我需要更新这个关系。当医生想要注册她/他的新诊所,我在DTO
课程中获取她/他的注册信息,将新的clinic
信息(以ClinicDto
班级形式)添加到Doctor.Clinics
个馆藏,并尝试通过以下方式更新数据库中的医生ID像这样:
例如,这是我从数据库获得的信息:
Doctor_ID : 1
Clinics : {Clinic_ID : 1}
这是我发送到数据库以供更新医生实体的信息:
Doctor_ID : 1
Clinics : {Clinic_ID : 1 , Clinic_ID : 2 }
这是我在服务器中的更新方法:
[HttpPut]
[ResponseType(typeof(Doctor))]
// PUT: api/Doctors/registerNewClinicForExistingDoctor
public IHttpActionResult registerNewClinicForExistingDoctor(Doctor doctor)
{
db.doctors.Attach(doctor);
db.Entry(doctor).Property(x => x.clinics).IsModified = true;
db.SaveChanges();
return Ok(doctor);
}
当我尝试更新Doctor
实体时,发生了此错误。
该物业的诊所&#39;在类型&#39;医生&#39;不是原始或复杂的财产。 Property方法只能与原始或复杂属性一起使用。使用Reference或Collection方法。
在这张图片中,您可以在更新前看到Doctor类(在winform中)。
现在,请告诉我当我想为现有医生注册新诊所时我必须做什么。什么错了?