使用EF6和WinForm

时间:2016-09-23 16:52:52

标签: winforms entity-framework insert-update

在我的情况下,我有一个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方法。

enter image description here

在这张图片中,您可以在更新前看到Doctor类(在winform中)。

现在,请告诉我当我想为现有医生注册新诊所时我必须做什么。什么错了?

0 个答案:

没有答案