0

私たちはRIAサービスで遊んでみようとしています。レコードを削除する方法がわからないようです。これが私が使おうとしているコードです。

   SomeDomainContext _SomeDomainContext = (SomeDomainContext)(productDataSource.DomainContext);
    Product luckyProduct = (Product)(TheDataGrid.SelectedItem);

    _SomeDomainContext.Products.Remove(luckyProduct);

    productDataSource.SubmitChanges();

エンティティ部分からのオブジェクトの削除は正常に機能しますが、DBには何の影響も与えないようです。私は私が想定しているようにオブジェクトを使用していますか、それとも物事を保存する別の方法がありますか?

4

2 に答える 2

1

エラーシステムは少し厄介です。これを試してみてください。エラーが発生した場合はエラーが発生します。私の問題は、オブジェクトを削除する前に最初に削除する必要がある他のテーブルへの依存関係でした。例:チケットを削除する前に削除されたタスク。

System.Windows.Ria.Data.SubmitOperation op = productDataSource.SubmitChanges();
op.Completed += new EventHandler(op_Completed);

void TicketsLoaded_Completed(object sender, EventArgs e) {
   System.Windows.Ria.Data.SubmitOperation op = (System.Windows.Ria.Data.SubmitOperation)sender;
   if (op.Error != null) {
      ErrorWindow view = new ErrorWindow(op.Error);
      view.Show();
   }
}
于 2009-08-20T16:06:23.540 に答える
1

上記のコードスニペットでは、イベントハンドラーではなくコールバックパラメーターを使用することをお勧めします。

productsDataSource.SubmitChanges(delegate(SubmitOperation operation) {
    if (operation.HasError) {
        MessageBox.Show(operation.Error.Message);
    }
}, null);

コールバックモデルはLoad/SubmitChangesの呼び出し元向けに設計されていますが、イベントはLoadOperation/SubmitOperationへの参照を取得する他のコード向けに設計されています。

お役に立てば幸いです...

于 2009-08-25T18:19:25.593 に答える