Obtendo @@ IDENTITY do TableAdapter
Estou tentando concluir uma tarefa aparentemente simples que se transformou em uma aventura de várias horas:@@Identity
deTableAdapter.Insert()
.
Aqui está o meu código:
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");
}
1responda sugere que tudo o que preciso fazer é mudar oExecuteMode
. Eu tentei isso. Isto fazGetData()
Pare de funcionar (porque agora estou retornando um escalar em vez de dados de linha) (preciso manter GetData ()). Também não resolve o problema em que a variável inserID ainda está definida como 1.
Eu tentei criar um segundoTableAdapter
noTypedDataSet.XSD
e definindo a propriedade desse adaptador como "escalar", mas ainda falha com a variável obtendo o valor 1.
O comando de inserção gerado é
INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description);
SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY())
E a "Atualizar a tabela de dados" (adiciona uma instrução select após as instruções Insert e Update para recuperar a identidade "também está definida.
Meio Ambiente
SQL Server 2008 R2, Visual Studio 2010, .NET 4, Windows XP, todos na mesma máquina local.
O que está causando isso?
EDIT / UPDATE
Quero esclarecer que estou usando código gerado automaticamente no Visual Studio. Não sei qual é a "ferramenta" que gerou o código, mas se você clicar duas vezes no arquivo * .XSD, ele exibirá uma interface do usuário do Esquema de Tabela SQL e do TableAdapter associado. Quero continuar usando o código gerado automaticamente e, de alguma forma, habilitar a obtenção da identidade. Não quero escrever tudo manualmente com procedimentos armazenados.