Dapper y acceso devolviendo valores en blanco

c# dapper ms-access oledb

Pregunta

Estoy tratando de extraer datos de una base de datos de Access usando dapper. Tengo la siguiente clase definida para usar los campos de la base de datos de acceso que necesito leer. Luego traté de extraer los datos usando el siguiente código. Cuando ejecuto esto, solo vuelven los espacios en blanco. El número de espacios en blanco coincide con el número de registros en la tabla de datos.

Traté de usar una cadena sql más corta con los mismos resultados.

No puedo encontrar ninguna información sobre este tema, ¿alguien tiene alguna idea al respecto?

public class DLabResults
{
    public int ResultsFolderNumber { get; set; }
    public int Request { get; set; }
    public int Release { get; set; }
    public string Formulation { get; set; }
    public string Container { get; set; }
    public string Closure { get; set; }
    public string Shipper { get; set; }
    // public string Label_Back { get; set; }
    // public string Label_Front { get; set; }
    public string FilePath { get; set; }
}

public void LoadDapperDLabResults(List<DLabResults> items)
{
    string sql = "";
    //sql = "SELECT tblResults_Results.R_Project_Assignment, tblResults_Results.R_Project_Request, tblResults_Results.R_Project_Release, tblResults_Results.R_Formulation, tblResults_Results.R_Closure, tblResults_Results.R_Container, tblResults_Results.R_Shipper, '' AS Blank1, '' AS Blank2, tblResults_Results.R_Test_FullPath FROM tblResults_Results WHERE(((tblResults_Results.R_Formulation)Like '*' & [Formulation] & '*') AND ((tblResults_Results.R_Closure)Like '*' & [Closure] & '*') AND((tblResults_Results.R_Container)Like '*' & [Container] & '*') AND((tblResults_Results.R_Shipper)Like '*' & [Shipper] & '*')) ORDER BY tblResults_Results.R_Project_Assignment, tblResults_Results.R_Project_Request, tblResults_Results.R_Project_Release;";
    sql = "SELECT * FROM tblResults_Results";
    using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\DavidsoJ\\Desktop\\Fixed Push Workbooks\\Redesigned Databases\\Development Lab Results Database.accdb"))
    {
        //var TM2 = connection.Query<DLabResults>(sql).ToList();
        List<DLabResults> TM2 = connection.Query<DLabResults>(sql).ToList();
        //add items to employess    
        if (items == null || items.Count < 1)
        {
        }
        else
        {
            TM2.AddRange(items);
        }
        dataGridView1.DataSource = TM2;
    }
}

Respuesta popular

Los nombres de columna de la consulta SQL no parecen coincidir con las propiedades del modelo de objeto deseado DLabResults .

Actualice los nombres de las columnas devueltos por la consulta para que coincidan con el objeto

SELECT tblResults_Results.R_Project_Request AS Request
/*, ... code removed for brevity */
FROM tblResults_Results

O actualice los nombres de las propiedades DLabResults para que coincidan con los nombres de columna devueltos por la consulta

public class DLabResults {

    public int R_Project_Request{ get; set; }

    //... code removed for brevity
}

De cualquier manera, cuando se usa dapper, los nombres de las columnas deben asignarse a los miembros del objeto para que el personal los complete.



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é