2011-10-20 30 views
0

こんにちはeverone削除された項目は、データベースに削除されていない

私が持っている機能

public void RemoveStock(string tickerName) { 

    int key = this.getKeyFromtickerName(tickerName); 
    foreach (var item in listingDataTable.Where(
     x => x.stock == key).ToList()) { 
      listingDataTable.RemoveListingRow(item); 
    } 
    listingTa.Update(listingDataTable); 
} 

定義:

listingDataTable = new stockDataSet.ListingDataTable(); 
listingTa = new stockDataSetTableAdapters.ListingTableAdapter(); 

データベースの種類:SQL ServerのCompact Editionの

この関数は、データセットから行を削除しますが、データベースから。データベースへの追加はすべて保存されますが、データベースからの削除はできません。

変更を受け入れるためにデータベースを変更する必要がありますか?

よろしく
Gorgen

+0

をDELETE – Boomer

+0

これは、データセットを作成するときにデータセットツールによって書き込まれるTableAdapterの一種です。 – Gorgen

答えて

0

私のデータベースアダプタにDeleteCommandを追加する必要があることが判明しました。 DeleteCommandは自動的に生成されませんでした。.RemoveListingRow(item)を使用した場合、エラーメッセージは発行されず、機能しませんでした。 tableAdaperのデータソースで

は、 "Designerで編集DataSetを" [プロパティ]を選択しますが、このような

としてコマンドを生成ListingTableAdapterは何ですか?(ストック= @ P1) リストFROM

1

代わりにこれを試してみてください:

foreach (var item in listingDataTable.Where(
    x => x.stock == key).ToList()) { 
     item.Delete(); 
} 

は、私は、これは実際に削除用の行をマークすると思います。

+0

このコードを取得すると、「削除する行を含むDataRowコレクションに渡すときに、有効なDeleteCommandが必要です」というメッセージが表示されます。 – Gorgen

+0

私はDeleteCommandを追加したときに、非常に激しくクラッシュし、並行性の問題が発生しました。しかし、少なくともあなたの答えは私に何が間違っているのかの手がかりを与えました、そして、それは主なものです、と私は思います。 :-) – Gorgen

関連する問題