El mapeo del resultado de la consulta SQL a DTO no se ordena en consecuencia

.net c# dapper sql

Pregunta

Hola, intento llenar un objeto del resultado de la consulta SQL de forma ordenada. Sin embargo, mi problema es que el DTO, cuando está mapeado / poblado a partir del resultado de la consulta, no está ordenado de la manera que lo he ordenado en mi consulta SQL.

Para el ejemplo más simple, digamos que tengo 5 registros de estudiantes en mi base de datos.

Select Id , Name, Age from Student Order by Name ASC es mi procedimiento GetStudents almacenado en la base de datos

Entonces digamos que este es el código que realmente hace el mapeo

    var queryResult= conn.GetStudents(); //this is just the conn that calls the stored procedure which is returned as a enumerable list

var myStudentRecord = new StudentsRecord{

        TotalRecord = queryResult.ToList().Count(),

        //this is not ordered according to the result from SP
        Students = queryResult.Select(result => new Student
                                     {
                                         Id = result.Id,
                                         Name = result.Name
                                         Age = result.Age
                                     }).ToList()
        }

El problema que tengo es The StudentsRecord.Students La lista de estudiantes de los alumnos vuelve en el mismo orden (en este caso ordenado por Name ASC ) independientemente de cambiar el orden StoredProcedure por ASC o DESC.

StudentsRecord.Students muestra una lista de

  1. Adán
  2. Arria
  3. Asia
  4. Ben
  5. Cruz

Si cambio mi procedimiento almacenado como DESC StudentsRecord.Students pedido permanece igual.

Espero que tenga sentido aquí.

Realmente, me pregunto por qué está pasando esto. ¿Está relacionado este marco? El conjunto de resultados de la consulta es esencialmente la misma lista con solo diferentes pedidos de ASC o DESC y, obviamente, funciona en consecuencia cuando ejecuta la consulta desde el estudio de gestión. Pero cuando se asigna al objeto, la lista no refleja el orden del resultado.

Respuesta aceptada

De acuerdo, entonces finalmente tengo una respuesta a esta pregunta (fue un error humano ^^,) . Usamos Dapper y configuramos nuestro proyecto para usar el patrón Command Query (CQRS).

En mi escenario, me extiendo desde una implementación heredada de datatable con paginación del lado del servidor. Así que amplié el procedimiento almacenado para aceptar dos parámetros adicionales, SortBy y OrderBy, ya que cada columna en la tabla de datos se puede ordenar a través de ASC / DESC

Mi error fue que los parámetros se definieron de la otra manera en que SortBy OrderBy el valor de OrderBy y vv. que estaba causando el problema! El mapeo realmente funciona tal como es



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué