2011-01-01 33 views
1

Abfrage Ich habe folgende LINQ to Code Entities:Wie ein LINQ to refresh to Entities

var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location") 
           .Include("van_assignments.pickup_requests.from_location") 
           .Include("van_assignments.pickup_requests.person") 
           .Include("school") 
      select v; 


gcVans.DataSource = vans; 

nun in einem anderen Verfahren (dh eine Refresh-Button), ich diese Abfrage zu aktualisieren bin, um so Änderungen vorgenommen wurden an die entfernte DB.

Ich habe versucht, den obigen Code erneut aufzurufen, aber es aktualisiert die Daten nicht. Kennt jemand eine bewährte Methode, um LINQ zu Entitäten zu zwingen, von der entfernten Datenbank zu aktualisieren?

Bearbeiten: Nach ein wenig Verstrickung verursacht dies die Aktualisierung der Van Informationen. Alle Fremdschlüsseldaten, die mit der Funktion .include() geladen wurden, werden jedoch nicht aktualisiert. Hat jemand eine Idee warum?

var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location") 
        .Include("van_assignments.pickup_requests.from_location") 
        .Include("van_assignments.pickup_requests.person") 
        .Include("school") 
      select v; 

objDB.Refresh(RefreshMode.StoreWins, vans); 

gcVans.RefreshDataSource(); 
+0

Es aktualisiert werden soll. –

+0

Es wird nicht mit diesem Code aktualisiert. Außerdem habe ich das Problem mit einigen neuen Informationen aktualisiert. Hast du eine Idee? –

+0

Wenn Sie die Teile "from v in" und "select v" entfernen, macht das überhaupt etwas anderes? – configurator

Antwort

0

Es klingt wie Sie die falsche MergeOption verwenden.

Der Standardwert AppendOnly versucht, clientseitige Änderungen beizubehalten und wird bei einer Aktualisierung nicht überschrieben. Vielleicht möchten Sie OverwriteChanges? Dann müssten Sie nicht Refresh anrufen.

Um dies zu setzen, würden Sie so etwas wie tun:

(vans as ObjectQuery).MergeOption = MergeOption.OverwriteChanges; 
+0

Danke, können Sie ein Beispiel dafür geben, wie ich die Zusammenführungsoption verwenden würde? –

+0

Ich habe ein Beispiel hinzugefügt. Machen Sie das vor dem Aufzählen der Ergebnisse. –

+0

Das Hinzufügen wird dazu führen, dass LINQ zu Entities vom Server aktualisiert wird, wenn ich aufrufe, objDB.Refresh (RefreshMode.StoreWins, vans); ? Nochmals vielen Dank für Ihre Zeit! –