ich einen WCF-Server-Anwendung haben Entity Framework läuft 6.Entity Framework 6 - Dataservicecontext Detect hat Änderungen
Meine Client-Anwendung verbraucht OData vom Server über eine Dataservicecontext, und in meinem Client-Code möchte ich in der Lage sein, zu nennen eine HasChanges() - Methode für den Kontext, um festzustellen, ob sich darin Daten geändert haben.
Ich habe versucht, die folgende Erweiterung Methode:
public static bool HasChanges(this DataServiceContext ctx)
{
// Return true if any Entities or links have changes
return ctx.Entities.Any(ed => ed.State != EntityStates.Unchanged) || ctx.Links.Any(ld => ld.State != EntityStates.Unchanged);
}
Aber es gibt immer false zurück, auch wenn ein Unternehmen es Änderungen hat verfolgt.
Zum Beispiel, da ich eine verfolgte Entität mit dem Namen Customer hat, wird der folgende Code immer vor dem Aufruf SaveChanges() zurückgegeben.
Customer.Address1 = "Fred"
if not ctx.HasChanges() then return
ctx.UpdateObject(Customer)
ctx.SaveChanges()
Wenn ich, wenn nicht ctx.HasChanges die Kommentar aus() dann Codezeile zurückkehrt, werden die Änderungen erfolgreich so gespeichert Ich bin froh, dass das Unternehmen die Änderung erhalten hat und in der Lage, Speichere es.
Es scheint, dass die Änderung ist durch den Kontext verfolgt zu werden, nur, dass ich diese Tatsache nicht aus meinem Code bestimmen kann.
Kann mir jemand sagen, wie HasChanges auf einem DataServiceContext zu ermitteln?
Vielleicht verstehe ich den Anwendungsfall nicht, aber warum nicht einfach SaveChanges() aufrufen? Wenn es keine Änderungen gibt, wird EF nichts tun. Vermutlich macht EF intern etwas ähnliches und erfinden das Rad einfach neu. – Vlad274
Danke Vlad, ich möchte einen Dialog öffnen, um zu sagen "Bist du sicher, dass du Änderungen speichern willst" bevor du die Daten speicherst. Wenn es keine Änderungen gibt, möchte ich den Dialog nicht öffnen. –