Я вполне уверен, что вы захотите использовать метод ObjectContext.ExecuteStoreQuery , если вам нужно значение идентификатора, а не ObjectContext.ExecuteStoreCommand .
Вам нужно будет использовать, как уже упоминалось, SCOPE_IDENTITY()
, а не @@IDENTITY
, так как SCOPE_IDENTITY()
возвращает значение идентификатора для текущей области выполнения, когда @@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);
}
}