Вы можете использовать функцию SCOPE_IDENTITY()
для получения последнего вставленного идентификатора автоинкремента:
DECLARE @new_parent_id INT
INSERT INTO MyParent(...) VALUES(...) -- your new parent data
SELECT @new_parent_id = SCOPE_IDENTITY()
INSERT INTO MyChild(parent_id, ...) VALUES(@new_parent_id, ...)
Это то, что вы имеете в виду?
РЕДАКТИРОВАТЬ :
Вы действительно можете сразу передать все свои данные с помощью ADO.NET и SQL Server 2008, используя параметры с табличными значениями:
http://msdn.microsoft.com/en-us/library/bb675163.aspx
Вы можете передать родителюи дочерние данные как две таблицы к вашей хранимой процедуре, затем используйте курсор для циклического перебора ваших родителей, вставляя одну, получая сгенерированный идентификатор, затем вставляя все его дочерние элементы, прежде чем переходить к следующему родительскому процессу.быть наиболее эффективным решением, потенциально требующим только одного обращения к базе данных, и если у вас есть большой объем данных для вставки, или если вы думаете, что можете использовать этот SP в других местах вашего решения, то это может быть путьидти.
Тем не менее, я думаю, что вставка записей по одной из клиентского приложения является более чистым и, безусловно, более простым способом достижения того, что вы хотите.