2012-04-25 13 views

Respuesta

10

Creo que esto es lo que está buscando, aunque es difícil de decir sin un ejemplo de la consulta que está tratando de ejecutar.

var sql = @"Select * 
      From Parent 
      Left Join Child on Child.ParentID = Parent.ParentID 
      Where Parent.ParentID = @id 
      ... more queries"; 

using(var reader = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var stuff = reader.Read<Parent, Child, Parent>(
     (p,c)=>p.Child = c, splitOn: "ChildId"); 
    // Continue to read from the other queries in your sql. 
} 

Básicamente el método de la SqlMapper.GridReaderRead es similar al método Query extensión. Solo obtiene el parámetro splitOn con una de las sobrecargas que requiere más de dos tipos genéricos.

1

Hay un rápido ejemplo tomado de otro hilo: how-to-get-values-for-child-objects

var sql = 
@" 
select * from PROFILES where profileId= @id 
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id"; 

using (var multi = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var profile = multi.Read<Models.PROFILE>().Single(); 
    profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList(); 
} 

Cada consulta devuelve un conjunto de objetos que a continuación se pueden asignar a sus entidades.

+0

Gracias Alex. Pero estoy buscando una forma de utilizar la función [Multimapping] (https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs#L459) –

+0

¿Podría darnos un ejemplo? en lo que estás tratando de hacer? – Alex

+1

Básicamente almaceno algunos campos desnormalizados en SQL (p. Ej .: un campo DTags donde tengo todas las etiquetas separadas por ";", etc.). Y cuando utilizo el método QueryMultiple (Read) no hay opción de usar el parámetro "split" como en las consultas MultiMapping –

Cuestiones relacionadas