Ich bin in einer Situation, in der ich von einer externen Quelle informiert werde, dass eine bestimmte Entität außerhalb meines aktuellen Datenkontexts geändert wurde. Ich bin in der Lage, die Entität und Anrufauffrischung wie folgt zu findenDataContext Aktualisieren und PropertyChanging & PropertyChanged Ereignisse
MyDataContext.Refresh (RefreshMode.OverwriteCurrentValues, myEntity);
und die Eigenschaften, die für die Entität geändert wurden, werden korrekt aktualisiert. Keines der INotifyPropertyChanging INotifyPropertyChanged scheint jedoch bei der Aktualisierung ausgelöst zu werden, sodass meine Benutzeroberfläche falsche Informationen anzeigt.
Ich bin mir bewusst, dass Refresh() fehlschlägt, die richtigen Eigenschaft Getter und Setter auf der Entität zu verwenden, um die Änderungsbenachrichtigungsereignisse auszulösen, aber vielleicht gibt es eine andere Möglichkeit, dasselbe zu erreichen?
Mache ich etwas falsch? Gibt es eine bessere Methode als Refresh? Wenn Refresh die einzige Option ist, hat jemand eine Arbeit?
Rex, Das Refresh() ist auf einem Controller/"Fast Business Layer" -Ebene erfolgt, es ist nicht in der Nähe der Benutzeroberfläche so eine manuelle Aktualisierung ist nicht in Frage. Wenn Refresh() die Enitity-Daten ändert, sollte es veränderte Ereignisse auslösen - die Tatsache, dass es nicht funktioniert, scheint mir eine grobe Aufsicht zu sein. – Scott
@Scott vielleicht ist es ein Versehen, aber das ist Code, den wir nicht ändern können, während deiner ist. Warum fügen Sie Ihrer DataContext-Klasse kein Ereignis hinzu, das Sie beim Aufruf von Refresh() aufrufen und an das von der Benutzeroberfläche anfügen? Das liegt nahe am SoC, den Sie von einem Ereignis in der Entität erhalten. –