L’inserimento del tableadapter ASP.NET non restituisce il valore di id quadro corretto

Nella mia pagina Web ASP.NET di Visual Studio 2008 codebehind, sto chiamando una routine di aggiunta in un tableadapter SQL, come segue.

NewLabID = LabItem.AddLaborItem(ThisWONum, TechID, DateTime.Now, DateTime.Now, "Working", ""); 

Il record viene aggiunto correttamente, ma “NewLabID” restituisce 1 ogni volta, non il nuovo LabID effettivo (LabID è definito come int / identity). Il comando di inserimento del codice generato automaticamente è

 INSERT INTO [LaborDetail] ([WONum], [TechID], [StartDate], [StopDate], [OtherType], [OtherDesc]) VALUES (@WONum, @TechID, @StartDate, @StopDate, @OtherType, @OtherDesc); SELECT LabID FROM LaborDetail WHERE (LabID = SCOPE_IDENTITY()) 

e il codice generato automaticamente che lo chiama è:

 returnValue = command.ExecuteNonQuery(); 

Passando attraverso questo con il debugger, returnValue è sempre 1. Il comando precedente non dovrebbe restituire il nuovo valore del campo Identity?

ExecuteNonQuery restituisce il numero di righe interessate. Vorrete utilizzare ExecuteScalar () invece.