Один и тот же запрос EF Core с одним и тем же набором данных и разными результатами при каждом запуске. ⇐ C#
-
Anonymous
Один и тот же запрос EF Core с одним и тем же набором данных и разными результатами при каждом запуске.
I have very weird issue below is a service which called by controller, it's returning different result without any change on passed parameter or on the data set
so for example in first run it shows me the found result as 15 and not found is 25, and without changing anything in the next run shows me total different result, and every time I ran the code it shows different result without changes on the data
Here is the code
public async Task GetTotals(DateTime? startDate, DateTime? endDate, string? parentGroup, string? childGroup, string? location) { List result = new List(); 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(TOTAL_TEST_RESULTS, totalResutls)); result.Add(new KeyValuePair("Found", found)); result.Add(new KeyValuePair("Not_Found", notFound)); } catch (Exception ex) { throw new Exception(ex.Message); } return result; } Update:
Here is my Stored Procedure query:
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
Источник: https://stackoverflow.com/questions/780 ... -every-run
I have very weird issue below is a service which called by controller, it's returning different result without any change on passed parameter or on the data set
so for example in first run it shows me the found result as 15 and not found is 25, and without changing anything in the next run shows me total different result, and every time I ran the code it shows different result without changes on the data
Here is the code
public async Task GetTotals(DateTime? startDate, DateTime? endDate, string? parentGroup, string? childGroup, string? location) { List result = new List(); 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(TOTAL_TEST_RESULTS, totalResutls)); result.Add(new KeyValuePair("Found", found)); result.Add(new KeyValuePair("Not_Found", notFound)); } catch (Exception ex) { throw new Exception(ex.Message); } return result; } Update:
Here is my Stored Procedure query:
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
Источник: https://stackoverflow.com/questions/780 ... -every-run
Мобильная версия