为什么我们需要在删除之前将selftracking实体附加到上下文?

时间:2010-08-12 05:46:21

标签: entity-framework

我有一项服务,可以添加,更新和删除患者实体。 我让患者实体成为了自我实体。

但仅限于删除我需要在删除之前调用'附加'实体,为什么不添加和更新所需的附件。

仅为删除附加的逻辑是什么(我有cascading property = true)

 public List<Patient> AddPatient(Patient pat)
    {


        DataBaseContext.Patients.AddObject(pat);           
        DataBaseContext.SaveChanges();
        return DataBaseContext.Patients.Include("PatientContacts").ToList();

    }

    public List<Patient> DeletePatient(Patient pat)
    {

       //Why only for delete we need to attach ??????????

        DataBaseContext.Patients.Attach(pat);
        DataBaseContext.Patients.DeleteObject(pat);
        DataBaseContext.SaveChanges();
        return DataBaseContext.Patients.Include("PatientContacts").ToList();
    }

    public List<Patient> UpdatePatient(Patient pat)
    {

         DataBaseContext.Patients.ApplyChanges(pat);
         DataBaseContext.SaveChanges();
         return DataBaseContext.Patients.Include("PatientContacts").ToList();
    }

1 个答案:

答案 0 :(得分:1)

您应该将patientGUID发送到该方法,然后从数据库中获取患者,然后进行删除

public List<Patient> DeletePatient(string patientGUID)
{

   var patient = DataBaseContent.Patients.SingleOrDefault(p => p.patientGUID == patientGUID);

    DataBaseContext.Patients.DeleteObject(patient);
    DataBaseContext.SaveChanges();
    return DataBaseContext.Patients.Include("PatientContacts").ToList();
}