繁体   English   中英

如何使用实体框架检索从存储过程返回的值?

[英]How to retrieve a value returned from a stored procedure using entity Framework?

我一直在寻找一种合适的方式来处理这个问题。 我有一个存储过程,它通过使用 ID 参数从表中查找记录,该参数仅输出一列。

在房子的 c# 一侧,我通过数据库上下文调用存储过程。

当前,收到的错误是:“null” 预期结果是该行的内容。

执行查询示例

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);
            }

如问题中所述:您正在使用实体框架。 为什么要调用存储过程呢?

你可以通过 linq

dbContext.Output.Where(x=>x.Id == logId).FirstOrDefault()

这将返回输出表的第一个返回对象。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM