RejectChanges не отменяет автонумерацию ( Я понимаю, почему благодаря этому сообщению ). Но когда я сохраняю строку. Он переопределяет автонумерацию, которая была первоначально возвращена мне. Мне нужно знать идентификатор родительской строки, чтобы я мог создавать связанные записи.
Возможно, есть лучший способ, которым я должен создавать связанные строки?
Я видел это сообщение , в котором рекомендовалось изменить значение AutoIncrement на -1 и AutoSeed на -1. Но это не имеет смысла, и это не сработало для меня.
В моем коде есть две таблицы: Отгрузки и Отгрузка_Пакет_Детали. Это отношения 1-многие.
r = this.allertDataSet3.Shipments.NewShipmentsRow();
log.Debug("The new ShipmentRow ID is " + r.ShipmentID); // ID == 1
this.allertDataSet3.Shipments.RejectChanges();
r = this.allertDataSet3.Shipments.NewShipmentsRow();
log.Debug("The new ShipmentRow ID is " + r.ShipmentID); // ID == 2
r.NumPkgs = p.Length;
this.allertDataSet3.Shipments.Rows.Add(r);
// Create Related Row
MyCompany.MyNamespace.allertDataSet3.Shipment_Package_DetailsRow pd = this.allertDataSet3.Shipment_Package_Details.NewShipment_Package_DetailsRow();
pd.ShipmentID = r.ShipmentID; // ID == 2 here.
pd.TrackingNumber = trackingNumbers[i];
this.allertDataSet3.Shipment_Package_Details.Rows.Add(pd);
this.shipmentsTableAdapter.Update(this.allertDataSet3);
// At this point if i set a breakpoint and look at database, it's been committed to the database with ID == 1.
// The following line will fail since I set the package details row to ID == 2.
this.shipment_Package_DetailsTableAdapter.Update(this.allertDataSet3);