如果某些内容发生了变化,EntityFramework只会调用保存更改

时间:2015-05-29 10:13:11

标签: entity-framework

当我使用EF6编辑实体时,我的服务层中的代码类似于:

    public bool EditPatient(Patient patient)
    {
        db.Entry(patient).State = EntityState.Modified;
        db.SaveChanges();
        return true;
    }

如果患者的对象字段实际发生变化,是否只能进行SaveChanges调用?

每当有人在编辑页面上按下保存时,即使有人按下保存而不进行任何更改,也会调用此方法。

这不起作用,因为当我检索并更改患者对象时,检索现有患者会反映这些变化。所以它总是看到patient == existingPatient。在将更改保存到db之前,它看起来像是在缓存它。

     var existingPatient = db.Patients.Where(x => x.PatientId == patient.PatientId).First();
            if (patient != existingPatient)
            {
                var patientHistory = Mapper.Map<PatientHistory>(patient);
                patientHistory.UserId = UserId;
                patientHistory.ChangeType = "Edited";
                CreatePatientAudit(patientHistory);

                db.Entry(patient).State = EntityState.Modified;
                db.SaveChanges();
                return true;
            }
            else
            {
                return false;
            }

0 个答案:

没有答案