0

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

谢谢。

4

1 回答 1

1

这种行为是意料之中的——你从集合中删除一个项目,如果数据库调用失败,它就不会神奇地重新出现。您可以手动将项目重新插入到 catch 块中,或者从数据库中重新获取整个集合。

您也可以重试保存,直到成功,但在没有任何上下文的情况下很难判断最佳选择是什么。

于 2013-01-08T15:26:58.933 回答