C# 使用实体框架存储过程获取简单值

C# 使用实体框架存储过程获取简单值,c#,entity-framework,stored-procedures,ado.net,C#,Entity Framework,Stored Procedures,Ado.net,我有一个存储过程并将其转换为整数。我想获取并使用该整数,但得到如下错误: 'System.Data.Objects.ObjectResult1[System.Nullable1[System.Int32]] 无法将类型对象分配给“System.IConvertible” 以下是我的存储过程: CREATE PROC prDetectMurderer(@carId INT) AS BEGIN SET NOCOUNT ON SELECT TOP 1 DriverI

我有一个存储过程并将其转换为整数。我想获取并使用该整数,但得到如下错误:

'System.Data.Objects.ObjectResult1[System.Nullable1[System.Int32]] 无法将类型对象分配给“System.IConvertible”

以下是我的存储过程:

CREATE PROC prDetectMurderer(@carId INT)      
AS BEGIN      
SET NOCOUNT ON      
SELECT TOP 1 DriverId FROM EventTable       
WHERE CarId = @carId    
AND Damage = 'false'      
ORDER BY EventId DESC      
SET NOCOUNT OFF      
END
和我的c#代码:


如何解决它?

这个答案显示如何使用EF从存储过程中获取int。

此答案显示如何使用EF从存储过程中获取int。

是否将存储过程导入为函数?请参见此处:是的,我将sp作为prDetectMurderer()方法导入,并带有一个整数参数。导入时,您是否选择过程的返回值为标量?也可以使用
int
而不是
var
如下所示:
var sofor=Convert.ToInt16(entity.prDetectMurderer(11))
或使用
System.Nullable
而不是
int
。根据错误,Convert.ToInt16方法不支持Nullable类型。结果可为Null,因为存储过程可能找不到任何匹配的结果。是否将存储过程作为函数导入?请参见此处:是的,我将sp作为prDetectMurderer()方法导入,并带有一个整数参数。导入时,您是否选择过程的返回值为标量?也可以使用
int
而不是
var
如下所示:
var sofor=Convert.ToInt16(entity.prDetectMurderer(11))
或使用
System.Nullable
而不是
int
。根据错误,Convert.ToInt16方法不支持Nullable类型。结果可以为null,因为存储过程可能找不到任何匹配的结果。
int sofor = Convert.ToInt16(entity.prDetectMurderer(11));