установить родительскую строку при добавлении новой записи в источник привязки (набор данных - родитель-потомок)

может кто-нибудь помочь мне, как установить родительскую строку при добавлении новой записи в источник привязки? Я использую типизированный набор данных, С# winforms.

мой код (добавить родительскую и дочернюю строку):

DataRowView drvParent = (DataRowView)bsParent.AddNew()
drvParent.BeginEdit();
drvParent["ID"] = -1;
drvParent["Name"] = "Parent";
drvParent.EndEdit();
DataRowView drvChild = (DataRowView)bsChild.AddNew();
drvChild.BeginEdit();
drvChild["ID"] = -1;
drvChild.Row.SetParentRow(drvParent.Row);
drvChild["Name"] = "Child";
drvChild.EndEdit();

затем при нажатии кнопки «Сохранить»:

this.Validate();
bsChild.EndEdit();
bsParent.EndEdit();
ParentTableAdapter pAdapter = new ParentTableAdapter();
pAdapter.Update(myDataSet.Parent);
ChildTableAdapter cAdapter = new ChildTableAdapter();
cAdapter.Update(myDataSet.Child);

ID Parent в дочернем элементе равен нулю, почему? тогда как я уже установил дочернюю родительскую строку. Благодарность


person Willy    schedule 10.11.2012    source источник


Ответы (1)


Я сейчас работаю над похожей проблемой. Вы хотите убедиться, что у вас есть правильные отношения данных между вашими родительскими/дочерними таблицами. В данном случае это будет внешний ключ. Я думаю, что без отношения внешнего ключа вы сначала делаете обновление в родительской таблице, для родителя генерируется идентификатор, а затем второе обновление дочернего элемента пытается обновить, используя -1, который больше не является внешним ключом . Если вы настраиваете отношение внешнего ключа, после обновления родительской таблицы внешний ключ дочерних таблиц должен быть заполнен правильным идентификатором.

person Community    schedule 23.01.2013