2012-11-03 42 views
1

所以,我有一個MS Access數據庫與父表:爲什麼我的孩子記錄與保存到Access的數據集中的父記錄不相關?

ID Autonumber 
Description Text 

子表:

ID AutoNumber 
Description Text 
ParentID Number 

我已經創建了關係:

Parent column: ID 
Child column: ParentID 
Enforce Ref Integrity, Cascade Update and Cascade Delete 

我已經投進視覺此Studio 2010,該向導已創建數據集和適配器。 我修改了xsd以將關係設置爲Both Relation and Foreign Key ConstraintUpdate/Delete規則爲Cascade

所以我嘗試添加父記錄與相關的子記錄:

var taParent = new TestDataSetTableAdapters.ParentTableAdapter(); 
var taChild = new TestDataSetTableAdapters.ChildTableAdapter(); 
var ds = new TestDataSet(); 
taParent.Fill(ds.Parent); 
taChild.Fill(ds.Child); 

var rowParent = ds.Parent.NewParentRow(); 
rowParent.Description = DateTime.Now.ToString(); 
ds.Parent.AddParentRow(rowParent); 

var rowChild = ds.Child.NewChildRow(); 
rowChild.ChildText = DateTime.Now.ToString(); 
ds.Child.AddChildRow(rowChild); 

taParent.Update(ds); 
var parentId = rowParent.ID; // <-- This is still -1 
// taParent.Fill(ds.Parent); // <-- Doing this hoping to reload the parent record gives: Cannot clear table Parent because ForeignKeyConstraint ParentChild enforces constraints and there are child rows in Child. 

taChild.Update(ds.Child); 

但孩子PARENTID記錄爲空。

如果我嘗試:

rowChild.SetParentRow(rowParent); 

我會得到
You cannot add or change a record because a related record is required in table 'Parent'.

我缺少什麼?

回答

0

您是否在taParent.Update(ds)之後檢查了您的rowParent實際上是否已更新,並在數據庫中包含正確的ID

  • 如果是這樣,你有沒有嘗試設置rowChild.SetParentRow(rowParent)你救孩子taChild.Update(ds.Child)過嗎?

  • 如果您rowParent不包括taParent.Update(ds)後的有效ID,你試圖將其分配給孩子之前從數據庫中重新加載它?

它看起來像問題可能涉及到的事實,之前的數據已經被保存到數據庫中自動遞增的ID不能被知道,然後從它重新加載,所以你可以分配值到其他記錄。

+0

謝謝,問題更新與我的嘗試。父ID永遠不會傳播回數據集。重新加載失敗。 –

相關問題