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 に答える