我一直在寻找合适的方式来处理此问题。我有一个存储过程,该存储过程通过使用ID参数从表中查找记录,该参数仅输出一列。
在房子的C#端,我正在通过数据库上下文调用存储过程。
当前,收到的错误是:“空” 预期的结果是该行的内容。
CREATE PROCEDURE [dbo].[getLog]
@logId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT [Logs]
FROM [dbo].[output]
Where [ID]=@logId
END
GO
C#代码
OutputDTO<SearchInputDTO> output = new OutputDTO<SearchInputDTO>();
try
{
var getID = srequest.ID;
var retLog = _output.getLog(getID);
return Ok(retLog);
}
catch (Exception e)
{
ErrorHandler.HandleError("Failed to retrieve rows: ", e);
LogManager.Log("error", Level.ERROR, "Login: " + e);
output.Success = false;
output.ErrorMessage = "Failed to retrieve rows.";
output.ErrorDetails = new Dictionary<string, string>
{
{ "Error", output.ErrorMessage }
};
var json = new JavaScriptSerializer().Serialize(output);
return Ok(json);
}
答案 0 :(得分:1)
如问题中所述:您正在使用实体框架。为什么必须为此调用存储过程?
您可以通过linq完成
dbContext.Output.Where(x=>x.Id == logId).FirstOrDefault()
这将返回输出表的第一个返回对象。
希望这会有所帮助。