Я пытаюсь выполнить, казалось бы, простую задачу, которая превратилась в приключение продолжительностью в несколько часов: получение @@Identity
из TableAdapter.Insert()
.
Вот мой код:
protected void submitBtn_Click(object sender, EventArgs e)
{
AssetsDataSetTableAdapters.SitesTableAdapter sta = new AssetsDataSetTableAdapters.SitesTableAdapter();
int insertedID = sta.Insert(siteTxt.Text,descTxt.Text);
AssetsDataSetTableAdapters.NotesTableAdapter nta = new AssetsDataSetTableAdapters.NotesTableAdapter();
nta.Insert(notesTxt.Text, insertedID, null,null,null,null,null,null);
Response.Redirect("~/Default.aspx");
}
One ответ предлагает все, что мне, возможно, придется изменить ExecuteMode
.Я попробовал это.Это заставляет GetData()
перестать работать (потому что теперь я возвращаю скаляр вместо строк) (мне нужно сохранить GetData ()).Это также не решает проблему в том, что переменная insertID по-прежнему имеет значение 1.
Я попытался создать второй TableAdapter
в TypedDataSet.XSD
и установить для этого адаптера значение «scalar», нопо-прежнему происходит сбой, когда переменная получает значение 1.
Сгенерированная команда вставки:
INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description);
SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY())
И "Обновить таблицу данных" (добавляет оператор выбора после операторов вставки и обновлениядля получения удостоверения »также установлено.
Среда
SQL Server 2008 R2, Visual Studio 2010, .NET 4, Windows XP, все локальные на одном компьютере.
Что вызывает это?
РЕДАКТИРОВАТЬ / ОБНОВИТЬ
Я хочу уточнить, что я использую автоматически сгенерированный код в Visual Studio. Я не знаючто такое «инструмент», сгенерировавший код, но если дважды щелкнуть файл * .XSD, он отображает пользовательский интерфейс схемы таблиц SQL и связанных с ним адаптеров таблиц. Я хочу продолжать использовать автоматически сгенерированный код и каким-то образом включить получение идентификатораЯ надеваюне хочу писать все это вручную с помощью хранимых процедур.