Сегодня здесь так тихо ... Хорошо, если кто-то тоже ищет такое решение, я нашел способ сделать это.
Итак, наша главная проблема - получить идентификаторвновь созданная запись в первой таблице.Если мы можем сделать это, после этого мы просто передаем его следующему методу, который создает соответствующую запись во второй таблице.
Я использовал DataSet Designer, чтобы воспользоваться функцией автогенерации кодаVS.Давайте назовем первую таблицу TripSets.В DataSet Designer щелкните правой кнопкой мыши TripSetsTableAdapter, затем Свойства.Разверните группу свойств InsertCommand.Здесь нам нужно сделать две вещи.
Сначала мы добавляем новый параметр в коллекцию параметров с помощью редактора коллекции параметров.Установите ParameterName = @TripId, DbType = Int32 (или что вам нужно), Direction = Output.
Во-вторых, мы изменяем CommandText (для удобства используем Query Builder).Добавьте в конец команды еще одну после точки с запятой, например:
(...);
SELECT @TripId = SCOPE_IDENTITY()
Таким образом, вы получите что-то вроде этого оператора:
INSERT INTO TripSets
(Date, UserId)
VALUES
(@Date,@UserId);
SELECT @TripId = SCOPE_IDENTITY()
Возможно, вы получите предупреждение об ошибке синтаксического анализатора, но вы можете просто игнорировать это.Настроив это сейчас, мы можем использовать в нашем коде бизнес-логики следующее:
int tripId;
int result = tripSetsTableAdapter.Insert(tripDate, userId, out tripId);
// Here comes the insert method into the second table
tripSetTripSearchTableAdapter.Insert(tripId, amountPersons);
Возможно, вы захотите каким-то образом синхронизировать эти операции (например, используя TransactionScope ), но это полностьювам решать.