我编写了一个小程序,使用RIA数据服务(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”。
当我查询数据库时,记录消失了。那么,为什么实体不删除记录?
僵尸来自哪里?
答案 0 :(得分:1)
根据这篇论坛帖子,这实际上可能是RIA服务中的一个错误。
http://betaforums.silverlight.net/forums/t/112232.aspx
我想您可能只是刷新页面作为解决方法?
答案 1 :(得分:1)
根据这个论坛帖子,这个 实际上可能是RIA中的一个错误 服务。
谢谢你。鉴于此,我能够找到一个不涉及刷新页面的工作。在我提交更改后,我通过修复它来刷新网格,我的人物对象和僵尸都消失了。
theDataGrid.ItemsSource = null;
theDataGrid.ItemsSource = _PersonService.persons;
答案 2 :(得分:0)
删除这样的项:DomainDataSource.DataView.Remove(item),而不是从DomainContext中删除