ExecuteStoreCommand возвращает -1, EntityFramework, C #? - PullRequest
1 голос
/ 13 октября 2011

Я хочу получить следующий автоматически увеличивающийся первичный ключ, Здесь Я понял, что для этого нужно использовать T-SQL. Поэтому я написал следующий метод:

public int GetLastNewsID()
{
    const string command = @"SELECT IDENT_CURRENT ('{0}') AS Current_Identity;";
    int id = EntityModel.ExecuteStoreCommand(command, "News");
    return id;
}

но возвращает -1, тогда как сейчас должно быть 4.

P.S: Когда я выполняю ниже T-SQL в SQL Management Studio, он возвращает 4

USE T;
GO
SELECT IDENT_CURRENT ('NEWS') AS Current_Identity;
GO

Ответы [ 2 ]

6 голосов
/ 13 октября 2011

Вам необходимо использовать ExecuteStoreQuery

public int GetLastNewsID()
{
    const string command = @"SELECT IDENT_CURRENT ({0}) AS Current_Identity;";
    var id = EntityModel.ExecuteStoreQuery<decimal>(command, "News").First();

    return Convert.ToInt32(id);
}

Запрос SQL вернет decimal, поэтому вам нужно преобразовать его в int.

0 голосов
/ 13 октября 2011

Читать часть о возвращаемом значении:

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecommand.aspx

...