¿Cómo mapear filas de una base de datos en una lista de objetos?

c# dapper filehelpers

Pregunta

A continuación se muestra la clase de ejemplo del objeto y el archivo .txt, utilizo Filehelpers para crear esta clase, luego leo un archivo .txt usando FileHelpers y convierte este archivo en estos objetos y los pongo en una lista.

archivo .txt:

1122233
4455566

Clase de ejemplo:

[FixedLengthRecord(FixedMode.AllowLessChars)]
public class Example
{

    [FieldFixedLength(2)]
    public string first;

    [FieldFixedLength(3)]
    public string second;

    [FieldFixedLength(2)]
    public string third;
}

Leer esto con Filehelpers me da 2 objetos de Example. El primer Example.first value es '11', etc. Empujo estos datos en una base de datos con la conversión de List a DataTable y usando SqlBulkCopy. Todo esto va bien

La tabla en la base de datos solo contiene 3 columnas (varchar) con nombres de columna; primero, segundo y tercero.

El problema surge cuando trato de recuperar los datos de la base de datos y volver a mapearlos en una lista, utilizo el siguiente código (usando Dapper) para esto:

IDbConnection connection = new SqlConnection(connectionString);
var rows = connection.Query<Example>("select * from examplesTable");
        foreach (Example e in rows)
        {
            examples.Add(e);    //List<Example> examples
        }

Esto devuelve la cantidad correcta de filas, sin embargo, si trato de recuperar datos de los objetos, contiene datos nulos. No puedo entender lo que estoy haciendo mal.

Respuesta aceptada

Verificaría que tenga los datos cargados correctamente antes de la inserción masiva de SQL y que no esté recibiendo ningún error de la inserción masiva.

¿La tabla en SQL Management Studio tiene los datos correctos?

Si tiene los datos correctos, intente simplemente leer como tabla de datos para ver qué se devuelve, ya que serán valores de objeto en lugar de un tipo específico.


Respuesta popular

No es posible escribir foreach (Example e in rows) , debe crear el constructor para Ejemplo, que creará un objeto de Ejemplo basado en los datos de cada fila. Se vería un poco como

foreach (DaraRow r in rows)
        {
            Example e = new Examaple(r["First"],r["Second"]);
            examples.Add(e);    //List<Example> examples
        }


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é