【发布时间】:2017-08-15 19:12:22
【问题描述】:
我在 SQL Server 存储过程的末尾有以下部分:
if(@someValue < 0)
begin
SELECT @resultIsSuccess = 0
Return @resultIsSuccess
end
else
begin
SELECT @resultIsSuccess = 1
Return @resultIsSuccess
end
其中@resultIsSuccess 的类型为bit。
所以,基本上我会返回一个布尔值来指示该过程是否产生了预期的结果。
在 EF 方面,我将 Function Import 的返回类型配置为布尔值。
当我打电话时:
bool isSuccess = context.MyFunctionImport(arg1, arg2).FirstOrDefault().Value;
我得到以下异常:
存储数据提供者返回的数据读取器没有 为所请求的查询提供了足够的列。
这里有什么问题?
【问题讨论】:
-
为什么不尝试
SELECT 0或SELECT 1而不是添加额外的行并声明一个变量?这可能是因为您实际上并没有“读取”任何内容,而是输出到返回变量。 -
永远不要使用存储过程的返回值来返回数据。使用输出参数或结果集。
标签: c# sql-server entity-framework