gpt4 book ai didi

c# - 我应该如何从 Entity Framework 4.1 中的存储过程返回一个 int?

转载 作者:可可西里 更新时间:2023-11-01 08:37:50 28 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.1,有时确实需要调用存储过程。其中一些返回整数作为返回值。例如

CREATE PROCEDURE ...
...
INSERT INTO ...
SELECT @@Identity

(更新:删除了返回值,不相关。我们正在返回身份)

我的存储库类中有以下代码:

var orderNo = context.Database.SqlQuery<int>("EXEC myProc").Single();

此操作失败并显示错误消息 从具体化的“System.Decimal”类型到“System.Int32”类型的指定转换无效。

如果我把上面的代码改成

var orderNo = context.Database.SqlQuery<decimal>("EXEC myProc").Single();

一切正常。

现在,我认为我应该能够返回一个整数。执行此操作的正确方法是什么?

最佳答案

我假设,根据对您问题的编辑 - 我在您发布后不久点击它,然后稍后刷新 - 这只是您返回身份时的问题?

如果是,则它是小数,因为@@IDENTITY(和 SCOPE_IDENTITY)返回 numeric(38,0)。查看此问题的答案:Why does select SCOPE_IDENTITY() return a decimal instead of an integer?如此处所述,转换为 int 应该允许 EF 正确检测类型。

关于c# - 我应该如何从 Entity Framework 4.1 中的存储过程返回一个 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com