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

EF Core同一数据集查询每次运行结果不一致问题求助

问题:无参数/数据变更时,服务返回结果不一致

控制器调用的服务在传入参数和数据集均无变化的情况下,每次运行返回的结果都不相同。例如首次运行显示Found为15、Not Found为25,后续无任何改动的运行结果却完全不同。

相关C#代码

public async Task<List<KeyValuePair<string, double>>> GetTotals(DateTime? startDate, DateTime? endDate, string? parentGroup, string? childGroup, string? location)
{
    List<KeyValuePair<string, double>> result = new List<KeyValuePair<string, double>>();

    try
    {
        SqlParameter[] param = StoredProcedureHelpers.GetAsSQLParameters(startDate, endDate, parentGroup, childGroup, location);

        string sql = "EXEC MyDb.spGetResult @StartDate, @EndDate, @parentGroup, @childGroup, @Location";

        var queryResult = await _context.VwResults.FromSqlRaw(sql, param).AsNoTracking().ToListAsync();

        queryResult = queryResult.AsEnumerable()
                                 .Where(x => !string.IsNullOrEmpty(x.Category) && 
                                             x.Category.Trim().ToUpper().Equals("Category1") &&
                                             !string.IsNullOrEmpty(x.FinalResultValue) &&
                                             (x.FinalResultValue.Trim().Equals("Found") || x.FinalResultValue.Trim().Equals("Not Found"))).ToList();

        var distinctedList = queryResult.DistinctBy(x => x.TextId);
        var totalResutls = distinctedList.Count();

        var found = distinctedList.Count(x => x.FinalResultValue?.Trim().ToUpper() == "Found".ToUpper());
        var notFound = distinctedList.Count(x => x.FinalResultValue?.Trim().ToUpper() == "Not Found".Trim().ToUpper());
     
        result.Add(new KeyValuePair<string, double>(TOTAL_TEST_RESULTS, totalResutls));
        result.Add(new KeyValuePair<string, double>("Found", found));
        result.Add(new KeyValuePair<string, double>("Not_Found", notFound));
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }

    return result;
}

更新:存储过程代码

ALTER PROCEDURE [MyDb].[spGetResult]   
    @StartDate DATE,   
    @EndDate DATE,
    @parentGroup VARCHAR(100) = NULL,
    @childGroup VARCHAR(100) = NULL,
    @Location VARCHAR(100) = NULL
AS   

SET NOCOUNT ON;  
SELECT  distinct 
        s.SCode AS SCode,
        s.text_id AS Text_ID,

        sp.Location,
       
        s.date AS Date,
        [dbo].[CASES].[DESCRIPTION] AS childGroup,
        t.group_name AS Lab,
        [dbo].[CASES].[DESCRIPTION] AS Result1,
        a.c_analyte_group AS Category,
        a.analysis_type AS parentGroup,
        [dbo].[CASES].[DESCRIPTION] AS Final_Result,                         
        r.FORMATTED_ENTRY,
        r.C_FINAL_ID_ENTRY AS FinalResult_Value
FROM [dbo].[SAMPLE]  AS s 

INNER JOIN [dbo].[TEST] AS t ON t.SCode = s.SCode
INNER JOIN [dbo].[RESULT] AS r ON r.test_number = t.test_number
INNER JOIN [dbo].[ANALYSIS] AS a  ON a.name = r.analysis
INNER JOIN [dbo].[CASES]  on [dbo].[CASES].[NAME] = r.alias_name

 
WHERE (s.date >= @StartDate AND s.date <= @EndDate)
    
AND (@parentGroup IS NULL OR  t.quot_group  LIKE '%'+@parentGroup+'%' OR t.ANALYSIS  LIKE '%'+@parentGroup+'%') 
AND (@childGroup IS NULL OR [dbo].[CASES].[DESCRIPTION] LIKE '%'+@childGroup+'%')
AND (@Location IS NULL OR sp.location LIKE '%'+@Location+'%')
    AND t.group_name = 'CH888'
    AND s.template in ( 'YTIO', 'WWWWW')
    AND a.active = 'AYT'
    AND a.c_analyte_group in ('Category1','Category2')

     AND t.status in ('NON Activated'); 

内容的提问来源于stack exchange,提问作者Abdulaziz Burghal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:00:55