2009-08-21 7 views
2

Ich habe ein kleines Programm geschrieben, das einen Datensatz aus der Datenbank mit den RIA Data Services (Silverlight) löscht und ich verwende ein Datagrid, um meine Entität anzuzeigen.Löschen eines Datensatzes kehrt von den Toten zurück, nachdem ich Änderungen unter Verwendung von RIA Data Services

private void DeleteButton_Click(object sender, RoutedEventArgs e) 
{ 
    DataContext _PersonService = 
      (DataContext)(personDataSource.DomainContext); 

    person removeThisPerson = (person)(dataGrid.SelectedItem); 

    // This removes it from the grid/entity 
    _PersonService.persons.Remove(removeThisPerson); 

    // This removes it from the database. 
    // After this it shows back up in the grid :(
    personDataSource.SubmitChanges(); 
} 

Wenn ich die SubmitChanges Run() der Datensatz aus dem Netz entfernt wird, sondern wieder erscheint dann auf dem Gitter. Es kommt mit einem "EntityState = New" zum Grid zurück.

Wenn ich die Datenbank abfragen, ist der Datensatz weg. Warum entfernt die Entität den Datensatz nicht?

Woher kommen die Zombies?

Antwort

1

Nach diesem Forum posten, diese könnte in der Tat ein Problem bei RIA Dienstleistungen sein.

Danke tehp. Angesichts dessen konnte ich eine Arbeit finden, bei der die Seite nicht aktualisiert wurde. Nachdem ich die Änderungen abgeschickt habe, aktualisiere ich das Gitter, indem ich es erneut an mein Objekt anwende und die Zombies sind weg.

theDataGrid.ItemsSource = null; 
    theDataGrid.ItemsSource = _PersonService.persons; 
0

entfernen Artikel wie folgt aus: DomainDataSource.DataView.Remove (Artikel), statt

+1

von Domaincontext Entfernen wir den DDS nicht verwenden. Es ist nur eine direkte Datenform, die MVVM verwendet, um mit dem Kontext zu sprechen. – johnnywhoop