Вы должны использовать SQL, который вставляет значения и выбирает новую запись вместо SQL, возвращающего скалярное значение, чтобы получить идентификатор.
«Мастер настройки TableAdapter» создаст этот тип SQL, если вы выберете «Создать новую процедуру хранения» на шаге «Выберите тип команды», а затем на «Введите инструкцию SQL для шага Выбрать процедуру хранения» выберите «Дополнительные параметры "mark" Generate Insert, Update ... "и" Refresh the data table ". Заполните остальную часть мастера названиями процедур новостей.
Сгенерированный SQL выглядит примерно так
INSERT INTO [apptbl] ([Id]) VALUES (@Id);
SELECT Id FROM apptbl WHERE (Id = SCOPE_IDENTITY())
с помощью TableAdapter ...
public int insert_newObj()
{
objDataTable dt = new objDataTable();
objRow dr = dt.NewObjRow();
// assign values to others fields, except the id...
dt.AddObjRow(dr);
Adapter.Update(dt);
return dr.Id;
}
Обратите внимание, что объект datarow будет заполнен "Адаптером" новым идентификатором из-за второго оператора SQL (SELECT ...) в процедуре сохранения.
Ну, я не уверен, что это могло бы помочь, потому что я не видел ваш SQL, но это очень распространенный способ получения идентификатора.