Ich glaube, das ist woanders gefragt, aber ich kann keine direkte Lösung finden. Meine Api übergibt das Objektmodell und auf der Serverseite wird jeder Wert des Objekts, der nicht übergeben wird, als null betrachtet (macht Sinn). Ist es möglich, dass ich EF6 mitteilen kann, Entity nicht mit NULL-Werten vom übergebenen Objekt zu aktualisieren, muss ich nicht jede Eigenschaft schreiben und prüfen, ob sie null ist.EF Repository mit UoW Update
Pseudo-Code
API
Update(int id, TaskEntity obj)
{
unitOfWork.Tasks.Update(id, userTask);
...
unitOfWork.Save()
}
Repo Update
Update(int id, T entity)
{
var existingRecord = Get(id); //Gets entity from db based on passed id
if (existingRecord != null)
{
var attachedEntry = Context.Entry(existingRecord);
attachedEntry.CurrentValues.SetValues(entity);
}
}
Mein Problem ist, dass alle Daten mit Nullwerten tatsächlich vorhandenen db Rekordwert mit Nullen überschreiben.
Bitte weisen Sie mich auf eine Lösung oder einen Artikel, wo dies gelöst ist. Sollte ich Reflexionen machen, könnte Auto-Mapper dies vielleicht handhaben (es ist nicht der Zweck, den ich glaube), oder irgendeine Art von Hilfsmethode sollte geschrieben werden, da meine Objekte Unterobjekte enthalten können.
Vielen Dank im Voraus.
Haben Sie die Liste der Eigenschaften in TaskEntity, die Sie in dieser Update-Methode aktualisieren werden? Oder Sie möchten alle Eigenschaften aktualisieren, die nicht null sind. Aber wie unterscheiden Sie dann zwischen einem Wert, der nicht angegeben wurde, und einem Wert, den ich auf null setzen/aktualisieren möchte? – Developer
Wenn ich Ihre Frage richtig verstanden habe, könnten Sie alle relevanten Informationen an die Methode übergeben und die gesamte Aktualisierung der Entität durchführen. – Eldho
Wenn Sie Reflektion verwenden möchten, können Sie dies http://stackoverflow.com/questions/17385472/entity-framework-only-update-values-that-are-not-null tun. Aber ich persönlich fühle mich nicht das beste Ding – Eldho