Wenn es eine Einheit UserInfo
genannt ist, ist UserId
der Primärschlüssel, I definierte Einheit wie folgtwie einige Feld in ef aktualisieren
UserInfo userInfonew = new UserInfo()
{
UserId=userInfo.UserId,
Email = userInfo.Email,
FirstName = userInfo.FirstName,
LastName = userInfo.LastName,
LastUpdateBy = GetCurrentUserGuid(),
LastUpdate = DateTime.Now
};
Wenn wir alle Objektfelder aktualisieren möchten, wir Verfahren haben als
folgtdb.Entry(userInfonew).State = EntityState.Modified;
db.SaveChanges();
Wenn wir einige Felder aktualisieren möchten, zum Beispiel, wollen wir nur E-Mail-Feld aktualisieren:
db.UserInfoes.Attach(userInfonew);
db.Entry(userInfonew).Property(x => x.Email).IsModified = true;
db.SaveChanges();
Aber wenn es 20 Felder in dieser Entität gibt, wenn wir 18 Felder aktualisieren wollen, brauchen die zwei verbleibenden Felder keine Aktualisierung, wir müssen 18 mal über db.Entry(userInfonew).Property(x => x.field).IsModified = true
schreiben, gibt es einen Weg darüber? Ich möchte nicht so oft darüber schreiben.
Warum EF-Änderungsverfolgung nicht wie gewünscht verwenden? Fragen Sie den Benutzer ab, aktualisieren Sie alle Eigenschaften, die Sie benötigen, rufen Sie 'SaveChanges' auf. EF wird den Rest erledigen. –
Wenn Sie die Änderungsverfolgung nicht verwenden können, können Sie den Entitätsstatus Ihres gesamten Eintrags auch auf Modifiziert setzen, wenn Sie noch die ursprünglichen Werte Ihres Eintrags haben. Wenn Sie nicht über Ihre Originaldaten verfügen und die generierte Abfrage so steuern möchten, dass nur die spezifischen Felder aktualisiert werden, müssen Sie jede Eigenschaft auf "Modified" setzen. – DevilSuichiro