[英]execute stored procedure from SqlQuery data reader issue
所以我试图按照以下方式执行存储过程
String sql =
"SET NOCOUNT ON; " +
"DECLARE @id INT, @itemnumber nvarchar(20); " +
"SELECT @id= '" + car.ID + "'" +
"EXEC [file].[usp_iudCar] " +
"@p_ID=@id OUTPUT," +
"@p_Location= '" + location + "', " +
"@p_ItemNumber=@itemnumber OUTPUT, " +
"@p_DoerTicket= '" + userToken + "' " +
"SELECT @id AS id, @itemnumber AS itemNumber; ";
QueryParamCollection queryParams = new QueryParamCollection();
queryParams.AddInt32Param(QueryParamName.CarID, (object)car.ID);
queryParams.AddStringParam(QueryParamName.Location, (object)location);
queryParams.AddStringParam(QueryParamName.DoerTicket, (object)userToken);
var update = context.Database.SqlQuery<Int32>(sql).FirstOrDefault<Int32>();
return update;
类似于我从服务器上的查询中进行操作时
DECLARE @return_value int,
@p_ID int,
@p_ItemNumber nvarchar(20)
SELECT @p_ID = 1783999
EXEC @return_value = [file].[usp_iudCar]
@p_ID = @p_ID OUTPUT,
@p_ItemNumber = @p_ItemNumber OUTPUT,
@p_Location = N'test',
@p_DoerTicket = N'0x0100000057065fc3a91f34c3f1f9cad41e2f5889bac6a68d3eab408dddc1cd54e57ce240565294f481f4f248bca4fb772d38fd737a6448dcbbfd9d58'
SELECT @p_ID as N'@p_ID',
@p_ItemNumber as N'@p_ItemNumber'
SELECT 'Return Value' = @return_value
GO
但我得到了执行
“ ExceptionMessage”:“数据读取器具有多个字段。多个字段对于EDM基本类型或枚举类型无效。
那么我该如何解决呢?或者正确的方法是什么呢?
这个错误:
“ ExceptionMessage”:“数据读取器具有多个字段。多个字段对于EDM基本类型或枚举类型无效。
意味着您的存储过程返回的不止一个字段。 这就是您要告诉EF:
var update = context.Database.SqlQuery<Int32>(sql).FirstOrDefault<Int32>();
该查询返回单个字段,但显然不是这样,否则您将不会得到该错误。
同样,这也不是使用EF数据库优先方法调用存储过程的方法。 请参考此问题和已接受的答案,以了解如何正确地做自己想做的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.