задаване на родителски ред при добавяне на нов запис към bindingsource (набор от данни - родител-дете)

може ли някой да ми помогне, как да задам родителски ред, когато добавям нов запис към bindingsource? Използвам въведен набор от данни, C# 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 родител в дете е нула, защо? като има предвид, че вече зададох родителския ред на детето. Благодаря


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


Отговори (1)


В момента работя над подобен проблем. Искате да сте сигурни, че имате правилните DataRelations между вашите родителски/дъщерни таблици. В този случай това ще бъде под формата на външен ключ. Без връзката с външен ключ мисля, че това, което се случва, е, че първо правите актуализацията си на родителската таблица, генерира се идентификатор за родителя и след това втората актуализация на дъщерния се опитва да актуализира с помощта на -1, който вече не е външният ключ . Ако настроите връзката на външния ключ, след актуализацията на родителската таблица външният ключ на дъщерните таблици трябва да бъде попълнен с правилния идентификатор.

person Community    schedule 23.01.2013