Getting @@ IDENTITY from TableAdapter
Ich versuche, eine scheinbar einfache Aufgabe zu erledigen, die sich in ein mehrstündiges Abenteuer verwandelt hat: Getting@@Identity
vonTableAdapter.Insert()
.
Hier ist mein Code:
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");
}
EinsAntworte schlägt vor, alles, was ich tun muss, ist das @ zu ändeExecuteMode
. Ich habe es versucht. Das machtGetData()
quit working (weil ich jetzt einen Skalar anstelle von rowdata zurückgebe) (ich muss GetData () behalten). Es löst auch nicht das Problem, dass die Variable insertedID immer noch auf 1 gesetzt ist.
Ich habe versucht, ein zweites @ zu erstelleTableAdapter
in demTypedDataSet.XSD
und Setzen der Eigenschaft für diesen Adapter auf "scalar", aber es schlägt immer noch fehl, wenn die Variable den Wert 1 erhält.
Der generierte Einfügebefehl lautet
INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description);
SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY())
Und die Option "Datentabelle aktualisieren" (fügt nach den Anweisungen "Einfügen" und "Aktualisieren" zum Abrufen der Identität eine Select-Anweisung hinzu) ist ebenfalls festgelegt.
Umgebun
SQL Server 2008 R2, Visual Studio 2010, .NET 4, Windows XP, alle lokal auf demselben Computer.
Was ist der Grund dafür?
EDIT / UPDATE
Ich möchte klarstellen, dass ich automatisch generierten Code in Visual Studio verwende. Ich weiß nicht, welches "Tool" den Code generiert hat, aber wenn Sie auf die * .XSD-Datei doppelklicken, wird eine Benutzeroberfläche des SQL-Tabellenschemas und der zugehörigen TableAdapter angezeigt. Ich möchte weiterhin den automatisch generierten Code verwenden und irgendwie das Abrufen der Identität ermöglichen. Ich möchte das nicht alles mit gespeicherten Prozeduren von Hand schreiben.