2012-01-03 24 views
0

我在父表中使用父表時數據庫中的表很少說P與某些子表有1:1的關係,而與其他子表的關係爲1:1。爲此,我在設計時通過'添加 - >新建項目 - > DataSet - > DataSet1.xsd'添加了DataSet'
因此,我擁有所有必需的表格及其1:1或1:M關係。用於關係數據的過濾器數據集

我在主表適配器上應用了一些過濾器,以便只有來自父表和其相關子記錄的選定記錄纔會填充到數據集中。最後,我想將這些數據從DataSet寫入到Xml文件中。

但是,我得到一個問題 - 我得到的最終數據集是從子表中獲取所有記錄。相反,它應該只有父表具有相關記錄的那些子記錄。

我使用下面的代碼 -

ParentDataSet parentDataSet = new ParentDataSet(); 
ParentTableAdapter parentTableAdapter = new ParentTableAdapter(); 
parentTableAdapter.Fill(parentDataSet.ParentTable, column1Value); // All fine until here as I have applied filter in tableAdapter SQL 

ChildTableAdapter childTableAdapter = new ChildTableAdapter(); 
//returns all rows in the child table -- shouldn't it return only those child records for which parent dataset table is having records?? 
childTableAdapter.Fill(parentDataSet.ChildTable); 

parentDataSet.WriteXml(xmlFilePath); 

請指導什麼,我在這裏失蹤?

謝謝!

回答

2

你見過this article?作者說

默認情況下,DataSet設計師設置DataRelations 之間的父子表作爲「的關係,只有」。這意味着DataSet 不會強制執行外鍵約束的客戶端,只是你 數據庫...

嘗試改變親子關係的類型外鍵約束。然後,檢查ChildTableAdapterSelectCommand財產。它按照您期望的方式過濾數據。

+0

感謝您的回覆。它沒有解決問題 - 所以我似乎必須爲相關表添加過濾器,以及爲父表添加了過濾器。 – iniki 2012-01-04 16:02:41

+0

我最終爲父母以及相關的子表添加了過濾器:-) – iniki 2012-03-06 22:48:54

+0

@iniki由於我的回答實際上並未解決問題,因此您應該將解決方案作爲單獨答案發布並接受它。 (你可以接受你自己回答你問的問題。) – Kimberly 2012-03-07 14:52:39