¿Cómo empezar a usar Dapper.Mapper?

c# dapper

Pregunta

Estoy usando Dapper.Mapper para mapear consultas SQL directamente a mis clases de aplicaciones. Creía que Dapper.Mapper es solo un recubrimiento de azúcar sintáctico sobre Dapper , el ORM original. Pero, todavía no soy capaz de comenzar con esto debido a muy pocas demostraciones y ejemplos. Sin embargo, he intentado esto según su página de git:

var sql="Select * from Students where Grades>90"'
var conn=new MySqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);
var studentRecord=conn.Query<Students, TopStudents>(sql);

Y mis modelos POCO son:

//Db table    
public class Students
{
    public int Id{get;set;}
    public string Name{get;set;}
    public float Grades{get;set;}
}

public class TopStudents
{
    public int Id{get;set;}
    public string Name{get;set;}
    public string Grades{get;set;}
    //...Few more properties
}

Pero estoy siguiendo la excepción, No Writable Property for TopStudents found in types Students

¿Me estoy perdiendo de algo? Por favor comparta cualquier demo o tutorial rápido. Ni siquiera hay una documentación adecuada donde pueda encontrar la causa de la excepción y resolverla yo mismo. ¿Cómo comenzar con Dapper.Mapper?

Respuesta aceptada

Consulte los documentos aquí , la consulta de ejemplo utiliza select * y usa una combinación interna, por lo que devuelve los objetos Employee AND Department. Si solo devolviera objetos Employee, entonces el código se vería así:

var sql = @"select * from Employee";

var employee = connection.Query<Employee, Department>(sql);

Aplicando esto a tu código:

var sql="Select * from Students where Grades>90"'
var conn=new MySqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);
var studentRecord=conn.Query<Students>(sql);

Si desea devolver Students and TopStudents , lo cambiaría a algo así como:

var sql="Select * from Students s
INNER JOIN TopStudents ts where s.Id = ts.Id AND s.Grades>90"'
var conn=new MySqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);
var studentRecord=conn.Query<Students, TopStudents>(sql);


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é