While reading about a recent question concerning @@Identity and the reasons to use SCOPE_IDENTITY() instead I experimented with LINQ to get the SCOPE_IDENTITY() results.
using (var dbc = new siteDataContext())
{
dbc.Log = Console.Out;
repertoire newSkill = new repertoire
{
skill = "a new item"
};
dbc.repertoires.InsertOnSubmit(newSkill);
dbc.SubmitChanges();
Console.Write(newSkill.id.ToString());
}
It seems that calling the id column of the inserted object gives you the SCOPE_IDENTITY(). Here is the SQL Log:
INSERT INTO [dbo].[repertoire]([skill]) VALUES (@p0) SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] -- @p0: Input NVarChar (Size = 10; Prec = 0; Scale = 0) [a new item] -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1