I am using LINQ to SQL to insert simple data into a table WITHOUT a stored procedure
. The table has a Primary Key ID column, which is set as an IDENTITY
column in both SQL Server
and in my DBML
.
First I call InsertOnSubmit();
with data for a single row, and then I call SubmitChanges();
to commit the row to the db. But I think there must be a simple way to then retrieve the row's IDENTITY
column value of the newly inserted row. I don't wish to provide the IDENTITY
column value to the db, I want it to generate one for me.
How is this best handled?
We use system function @@IDENTITY to return the maximum used IDENTITY value in a table for the IDENTITY column under the current session. Once we insert a row in a table, the @@IDENTITY function column gives the IDENTITY value generated by the statement.
You cannot reliably find out the next identity value - until you've actually inserted a new row into the table. Stop trying - you won't succeed - just accept the fact you cannot know the identity value before the row is actually inserted into the table and SQL Server has assigned the value.
here is a simple code snippet
Dim odb As New DataClassesDataContext
Dim tst As New test
tst.name = "abcd"
odb.tests.InsertOnSubmit(tst)
odb.SubmitChanges()
Response.Write("id:" + tst.id.ToString)
so, basically the object you used in InsertOnSubmit will get the identity field populated after the record has been created in the database
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With