2010-09-01 86 views
0

我使用Visual Studio 2010c#DataSet與2個表,如何從一個行刪除一行它會從另一行刪除一行?

我有2個表

一個DataSet

酮(MainList)具有類型,名稱,路徑,參數 另一個(UpadteList)具有路徑,散列,日期

我將文件添加到此列表中,並且它可以解決問題,現在我擁有以下內容:

當我添加文件類型「更新」 它將是「更新」,「我的程序」,「 .setup.exe「,」/ minimized「

,如果它是類型 「更新」 以下數據去(UpdateList) 「PATH-TO-/ my.setup.exe」, 「asdfwefwfgg3r34t34t34t」, 「2010-09-01」

我想如果上述(MainList)的行刪除,並在(UpdateList)相同路徑的行exsist它會刪除太

我應該使用循環或(我看到)的數據集屬性使用關係

什麼最好的辦法?

帶循環我進入了一些醜陋的錯誤,刪除了Mainlist中的一切!

注:我使用XML來存儲數據(數據不大)

+2

由於您使用的是DataSet,我假設您正在訪問數據庫,那麼爲什麼不定義外鍵約束並利用ON DELETE CASCADE自動刪除其他表中的匹配條目? – Dave 2010-09-01 13:58:50

回答

1

IMO,你有兩個選擇

  1. 使用DataTable的約束,如ForeignKeyConstraint與DeleteRule =級聯設置。
  2. 在MainList數據表上使用RowDeleted/RowDeleting事件查找並刪除其他表中的對應行。
+0

它是如何與一對多關係一起工作的? – miguelmpn 2018-01-31 18:04:46

+0

@miguelmpn,關係的基數並不重要......在一對多關係中,所有相關的子行都將在#1中刪除。對於#2,您必須手動執行此操作。 – VinayC 2018-02-02 04:39:37

+0

謝謝你的回覆。現在我瞭解Cascade,它總是從上到下。我試圖刪除一對多關係中的最後一個孩子,並自動刪除父母(這將是孤兒),但它不會那樣工作。 – miguelmpn 2018-02-02 09:32:37

0

我覺得代碼可以說是放錯了地方,處理數據的一致性。我會在數據庫中執行該操作,無論是在存儲過程中,還是在使用SQL Server時,都可能使用cascading deletes

+0

我使用XML來存儲數據(數據不大) – 2010-09-03 10:34:55