我的项目是WPF项目,我使用以下代码删除SelectedProducer表单ProducerCollection(ObservableCollection)。
try
{
context.Producers.Remove(SelectedProducer);
context.SaveChanges();
}
catch
{
messageService.Show("Error");
}
这是我的集合和SelectedProducer属性:
public ObservableCollection<DAL.Domain.Producer> ProducerCollection
{
get { return GetValue<ObservableCollection<DAL.Domain.Producer>>(ProducerCollectionProperty); }
set { SetValue(ProducerCollectionProperty, value); }
}
public static readonly PropertyData ProducerCollectionProperty = RegisterProperty("ProducerCollection", typeof(ObservableCollection<DAL.Domain.Producer>));
[Model]
public DAL.Domain.Producer SelectedProducer
{
get { return GetValue<DAL.Domain.Producer>(SelectedProducerProperty); }
private set { SetValue(SelectedProducerProperty, value); }
}
public static readonly PropertyData SelectedProducerProperty = RegisterProperty("SelectedProducer", typeof(DAL.Domain.Producer));
但是以这种方式也在发生错误时集合中删除了SelectedProdcuer。 如何处理这个问题?
感谢。
答案 0 :(得分:1)
此行为是预期的 - 您从集合中删除项目,如果数据库调用失败,那么它将不会神奇地重新出现。您可以手动将项目重新插入catch块中,或者从数据库中重新获取整个集合。
您也可以重试保存,直到成功,但很难说没有任何背景,最佳选择是什么。