2

RIA Data Services(Silverlight)を使用してデータベースからレコードを削除する小さなプログラムを作成し、データグリッドを使用してエンティティを表示しています。

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();
}

SubmitChanges()を実行すると、レコードはグリッドから削除されますが、グリッドに再表示されます。「EntityState=New」でグリッドに戻ります。

データベースにクエリを実行すると、レコードが失われます。では、なぜエンティティはレコードを削除しないのですか?

ゾンビはどこから来たのですか?

4

3 に答える 3

1

このフォーラムの投稿によると、これは実際にはRIAサービスのバグである可能性があります。

http://betaforums.silverlight.net/forums/t/112232.aspx

回避策として、おそらくページを更新するだけでよいと思いますか?

于 2009-08-21T17:23:45.777 に答える
1

このフォーラムの投稿によると、これは実際にはRIAサービスのバグである可能性があります。

tehpに感謝します。これに照らして、ページの更新を伴わない回避策を見つけることができました。変更を送信した後、グリッドを再パスして自分の人物オブジェクトを更新すると、ゾンビが消えます。

theDataGrid.ItemsSource = null;
   theDataGrid.ItemsSource = _PersonService.persons;
于 2009-08-21T18:28:53.680 に答える
0

DomainContextから削除する代わりに、DomainDataSource.DataView.Remove(item)のようなアイテムを削除します

于 2011-01-15T11:54:40.420 に答える