Estoy bastante seguro de que querrá usar el método ObjectContext.ExecuteStoreQuery si necesita el valor de identidad, en lugar de ObjectContext.ExecuteStoreCommand.
Usted tendrá que utilizar, como otros han mencionado SCOPE_IDENTITY()
, en lugar de @@IDENTITY
como SCOPE_IDENTITY()
devuelve el valor de identidad para el ámbito de ejecución currente wheras @@IDENTITY
"es una función del sistema que devuelve el último valor de identidad insertado."
Algo como esto debe hacer el truco:
using(var context = GetAContextThatsReadyToUse())
{
var valueForColumn1 = 5;
var result = ExecuteStoreQuery<int>("INSERT INTO table1 (Column1) VALUES ({0});SELECT SCOPE_IDENTITY()", valueForColumn1);
foreach(var item in result)
{
// Should only return one result, which is the identity value inserted by ExecuteStoreQuery
Console.WriteLine(item);
}
}
¿Qué es un alcance? 2 hilos son diferentes ámbitos? –
sí lo son. compruebe http://msdn.microsoft.com/en-us/library/ms190315.aspx para obtener documentación detallada sobre SCOPE_IDENTITY – Numenor
cómo difiere SCOPE_IDENTITY() de @@ identity, SCOPE_IDENTITY() devuelve @@ identity ... y en mi respuesta, he devuelto la identidad @@ después de la inserción ... – RameshVel