1

我想获得下一个自动递增的主键,在这里我理解使用 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。

PS:当我在 SQL Management Studio 中执行以下 T-SQL 时,它返回 4

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

2 回答 2

6

您需要使用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 查询将返回 a decimal,因此您需要将其转换为int.

于 2011-10-13T07:23:09.033 回答
0

阅读有关返回值的部分:

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

于 2011-10-13T07:23:41.237 回答