Slapper.AutoMapper devuelve solo un resultado de la lista de objetos

c# dapper slapper.automapper

Pregunta

Tengo dos POCO-s. A y B.

public class A{
    [Slapper.AutoMapper.Id]
    public int Id { get; set; }
    public B BType { get; set; }
    // Rest of the fields
}

public class B{
    [Slapper.AutoMapper.Id]
    public int Id { get; set; }
    public string Name {get;set;}
}

Resultado del procedimiento almacenado de T-SQL:

ID      B_Id    B_Name
1       1       B1
2       2       B2

Mi código para obtener la Lista con Dapper es:

List<A> aList = new List<A>();
            using (IDbConnection connection = new SqlConnection(GlobalConfig.ConnectionString()))
            {
                var p = new DynamicParameters();
                p.Add("@Id", someId);
                // Here debug shows me 2 correct objects inside of var list
                var list = connection.Query<dynamic>("[spApp_getBlaBlaByID]", p, commandType: CommandType.StoredProcedure);

                // After casting I got only 1
                aList =(Slapper.AutoMapper.MapDynamic<A>(list) as IEnumerable<A>).ToList();

            }
            return aList; // Debugging shows only 1 one of the objects

Entonces, ¿qué pasa con mi código? Por favor ayuda a encontrar el error. PD Vine a C # desde Java. Tal vez en C # world Slapper.Automapper ya no está de moda. ¿Cuál es la solución flexible y moderna para mapear POCO-s con DAPPER?

Respuesta aceptada

Para empezar, no entiendo la necesidad de Slapper aquí. Dapper es capaz de manejar este rol. Entonces, el código de algo como lo siguiente debería funcionar sin Slapper.

List<A> list = connection.Query<A>("[spApp_getBlaBlaByID]"......

En segundo lugar, lo mencionado por @ orhtej2 en los comentarios. El nombre del procedimiento almacenado finaliza con "IDID". Esta convención sugiere que devolverá un solo registro. ¿Estás seguro de que SP devuelve múltiples registros? Si es así, la muestra de código anterior debería hacer. Si devuelve registro único, cámbielo a algo como a continuación:

A a = connection.Query<A>("[spApp_getBlaBlaByID]"......


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é