Ich weiß, dass das Aktualisieren von Entitäten, ohne sie zuerst auszuwählen, ein häufiges Problem ist und viele Lösungen bereits auf StackOverflow sind, aber nach dem Lesen habe ich immer noch ein Problem.Aktualisieren einer Entität mit den erforderlichen Eigenschaften in Entity Framework
Ich verwende den folgenden Code einen Benutzerrechtsträger zu aktualisieren:
using (var context = GetContext())
{
var userEntity = new UserEntity() { ID = userUpdate.ID };
context.Users.Attach(userEntity);
context.Entry(userEntity).CurrentValues.SetValues(userUpdate);
context.SaveChanges();
}
Jedoch führt dies zu einem DbEntityValidationException
geworfen, weil mein Benutzer einige Rechtsträger erforderlichen Eigenschaften haben, aber diese sind nicht unbedingt festgelegt auf dem aktualisierten Entität.
Gibt es eine Möglichkeit, oder ist es einfach, die erforderlichen Eigenschaften zu entfernen?
Danke!
Warum begrenzen Sie nicht die a vailable Konstruktoren für 'UserEntity' zu denen, die es nicht in einem ungültigen Zustand initialisieren? –
Ich habe in dieser Instanz keine Werte für die erforderlichen Eigenschaften - eine User-Entität benötigt beispielsweise die E-Mail-Eigenschaft, aber möglicherweise wird nur der Name des Benutzers aktualisiert und das userUpdate enthält sonst nichts. Ohne den Benutzer aus der Datenbank auszuwählen, kann ich nicht wissen, auf was diese erforderlichen Eigenschaften eingestellt sind. Wählen Sie die Entität dann aktualisieren _does_ Arbeit, aber es ist nicht gerade ideal, um eine unnötige Abfrage zu machen, wenn ich nicht muss. –
@NathanCooper Es muss einen parameterlosen Konstruktor geben oder EF kann keine Entitäten erstellen. – DavidG