ExecuteStoreCommand 返回 -1 ,EntityFramework ,C#?

发布于 2024-12-10 05:05:12 字数 552 浏览 0 评论 0原文

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

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

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

I wanna get the next automatically incrementing primary key, Here I understood to use T-SQL for doing that.
So I wrote the following method :

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

but it returns -1, whereas it must be 4 right now.

P.S:
When I execute below T-SQL in SQL Management Studio , it returns 4

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦晓ヶ微光ヅ倾城 2024-12-17 05:05:12

您需要使用 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 查询将返回一个十进制 所以你需要将其转换为int

You need to use 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);
}

The SQL query will return a decimal so you need to convert it to int.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文