2012-06-05 26 views
10

Tengo un cliente que me ha dictado que use Dapper ORM, que nunca he usado antes. Tengo un problema con los objetos anidados. Tengo una clase principal (Ubicación) que tiene una clase de objeto de valor incrustado (Dirección). Las dos clases se ven así:Dapper ORM Objetos anidados

class Location { 
    int Id; 
    string LocationName; 
    Address LocationAddress; 
} 

Class Address { 
    string Street; 
    string City; 
    string State; 
    string ZipCode; 
} 

El SQL:

SELECT Id, LocationName, Street, City, State, ZipCode FROM Locations 

he vistazo a una serie de ejemplos, pero simplemente no puede obtener el conjunto problema encima de la derecha. Simplemente no entiendo lo suficiente Dapper para obtener la estructura correcta.

Respuesta

9

Puede usar el parámetro "splitOn" en su consulta apresurada.

var sql = "SELECT Id, LocationName, Street, City, State, ZipCode FROM Locations"; 
var conn = // your get connection logic here. 

using(conn) 
{ 
conn.Open(); 
var locations = conn.Query<Location,Address,Location>(sql, (location, address) => 
       { 
        location.LocationAddress = address; 
        return location; 
       }, splitOn: "Street"); 
} 

SplitOn es necesario si sus objetos en el conjunto de registros no son "dividido" por una columna denominada "Id".

Cuestiones relacionadas