2012-11-03 25 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永远不会传播回数据集。重新加载失败。 –

相关问题