Gibt es eine Möglichkeit, den aktuellen Wert einer Entity-Eigenschaft in BeforeSaveEntity (oder anderswo vor dem Speichern) auf der Serverseite zu erhalten ? Mit "aktuell" meine ich, was in der Datenbank vorhanden ist, wobei alle eingehenden Änderungen zusammengeführt werden. Dies ist nicht zur Validierung gedacht, sondern ich berechne einen Wert für eine Elterneigenschaft (die ich nicht auf dem Client haben möchte) basierend auf beiden Eltern Felder und Kinder Felder ...breeze - Ändern einer Entität auf dem Server basierend auf den Navigationseigenschaften vor dem Speichern
Zum Beispiel
public class Parent {
public ICollection<Child> Children{ get; set; }
}
. . .
protected override bool BeforeSaveEntity(EntityInfo entityInfo) {
if (entityInfo.Entity.GetType() == typeof(Parent) &&
(entityInfo.EntityState == EntityState.Added || entityInfo.EntityState == EntityState.Updated)) {
// Lazy load Parent's Children collection out of breeze's context
// so items are "current' (existing merged with changes)
Parent parent = (Parent)entityInfo.Entity;
Context.Entry(parent).Collection(p => p.Children).Load();
// this throws exception Member 'Load' cannot be called for property
// 'Children' because the entity of type 'Parent' does not exist in the context.
}
}
Ich denke, sie sind nicht im DBContext noch. Alles, was ich tun kann, ist, die vorhandenen Kinder aus der Datenbank abzurufen und die Änderungen in BeforeSaveEntities manuell zusammenzuführen, was mühsam ist.
Ich sah diese Antwort, aber ich brauche den aktuellen Zustand der Navigation mit allen eingehenden Änderungen. Also muss ich die Savemap durchlaufen und irgendwelche "Kinder" Änderungen für meine "Eltern" zusammenführen? – user210757
Wie würden Sie mit einer Sicherung umgehen, die Sie über den Eingangszustand einer Entität und der damit verbundenen Entitäten wissen müssen? – user210757
Ich habe meiner Antwort ein langes Beispiel hinzugefügt. Hoffe das hilft. –