You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

存储过程在SSMS中正常运行但C#代码调用结果异常

问题:ASP.NET Core 6调用SQL Server存储过程返回结果异常

我在SQL Server中创建了一个存储过程,传入ID即可返回数据库中匹配的记录。该存储过程在SSMS 2018中执行完全正常,但在ASP.NET Core 6项目中调用时,无法得到预期结果。调用时仅部分情况返回正确结果,且出现ID正确,但Key、EN-US等字段值与预期不符的问题。

预期返回结果示例:
id: 5
Key: 7h48f
EN-US: Header-1

实际返回结果示例:
id: 5
Key: jsoej
EN-US: Mixing


相关信息

传入的ID集合值

1, 3, 4, 6 & 7 

C#调用代码

private List<HeaderModel> getHeaderNames(List<TagIDModel> allID)
{
    var allHeaders = new List<HeaderModel>();

    for (int i = 0; i < counter; i++)
    {
        var header = _context.Translation.FromSqlRaw("EXEC getHeader @key = {0}", allID[i].TagID).ToList();
        allHeaders.Add(new HeaderModel
                {
                    HeaderName = header[0].EnUs
                });
    }

    return removeDoubles(allHeaders);
}

存储过程代码

ALTER PROCEDURE [dbo].[getHeader]
    @key int
AS
    SELECT Translation.id, [Key], [EN-US], [NL-NL], [CN-ZH]
    FROM Translation
    JOIN ParameterGroup ON Translation.id = ParameterGroup.ParameterGroupName
    JOIN TagData ON TagData.id=ParameterGroup.id
    WHERE TagData.id = @key

排查与解决思路

  1. 校验EF Core实体映射
    确认Translation实体类的属性与数据库字段完全匹配,尤其是带特殊字符的字段(如EN-US),需通过[Column("EN-US")]特性显式指定映射关系,避免EF Core自动匹配出错。

  2. 清除EF Core查询缓存
    循环调用存储过程时,EF Core可能复用之前的查询缓存导致结果混乱。可在每次调用后清除跟踪,或使用AsNoTracking()禁用跟踪:

    var header = _context.Translation.FromSqlRaw("EXEC getHeader @key = {0}", allID[i].TagID)
                                     .AsNoTracking()
                                     .ToList();
    
  3. 规范参数传递方式
    确保传入参数值正确,建议使用命名参数调用存储过程,避免位置参数引发的潜在问题:

    var header = _context.Translation.FromSqlRaw("EXEC getHeader @key = @tagId", 
                         new SqlParameter("@tagId", allID[i].TagID))
                                     .ToList();
    
  4. 检查存储过程连接逻辑
    虽然SSMS中执行正常,但需确认多表连接条件是否合理。比如TagData.id=ParameterGroup.id的关联是否符合业务逻辑,错误的外键关联会导致返回意外的关联数据。

  5. 确认循环变量正确性
    代码中counter变量未定义,需确保其值等于allID.Count,否则会出现循环次数错误,导致ID处理不完整或重复。

内容的提问来源于stack exchange,提问作者Jasper Leijten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:50:36