ObservableCollection也在Catch之后删除项目

时间:2013-01-08 15:20:28

标签: wpf observablecollection entity-framework-5

我的项目是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。 如何处理这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

此行为是预期的 - 您从集合中删除项目,如果数据库调用失败,那么它将不会神奇地重新出现。您可以手动将项目重新插入catch块中,或者从数据库中重新获取整个集合。

您也可以重试保存,直到成功,但很难说没有任何背景,最佳选择是什么。

相关问题