Я уверен, что вы захотите использовать метод ObjectContext.ExecuteStoreQuery, если вам нужно значение идентификации, а не ObjectContext.ExecuteStoreCommand.
Вы должны будете использовать, как уже упоминалось SCOPE_IDENTITY()
, а не @@IDENTITY
как SCOPE_IDENTITY()
возвращает значения идентификатора для сферы исполнения currente @@IDENTITY
Тогда как «является системной функцией, которая возвращает последнее вставленное значение идентичности.»
Что-то вроде этого следует сделать трюк:
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);
}
}
Что такое область действия? 2 потока - разные области? –
да, они есть. проверьте http://msdn.microsoft.com/en-us/library/ms190315.aspx подробную документацию для SCOPE_IDENTITY – Numenor
, как SCOPE_IDENTITY() отличается от идентификатора @@, сам SCOPE_IDENTITY() возвращает идентификатор @@ ... и в мой ответ, я вернул идентификатор @@ после вставки ... – RameshVel