Dapper con multimapping usando procedimiento almacenado

asp.net-mvc-3 c# dapper stored-procedures

Pregunta

Esto se refiere a Dapper en ASP.NET MVC3.

Tengo dos tablas tblBranchMaster , tblZoneMaster en mi base de datos y dos archivos de clase con los mismos detalles.

tblBranchMaster(ID, ZoneID, Name);
tblZoneMaster(ID, Name);    

Ambas tablas tienen una relación clave clave externa.

Tengo un procedimiento almacenado que tiene la siguiente consulta:

Select * from tblBranchMaster;

con alguna otra cosa lógica.

Ahora, ¿cómo puedo obtener el resultado de la zona con su rama relacionada en la lista?

Tengo la siguiente base de código:

List<tblBranchMaster> lstResult = Query<tblBranchMaster, tblZoneMaster,  tblBranchMaster>
  (tblBranchMaster.uspGetBranchListPagination, (objBranch, objZone) => 
  { objBranch.ZoneMaster = objZone; return objBranch; }, 
   param, splitOn:"Id").ToList();

Este código me da el siguiente error:

Al utilizar las API de mapeo múltiple, asegúrese de configurar el parametro splitOn si tiene claves distintas a Id.
Nombre del parámetro: splitOn

¿¿¿Qué me estoy perdiendo???

Respuesta popular

El resultado de la consulta debe tener el mismo formato y orden que los objetos que desea rellenar. En este caso, dapper espera que tenga "Id, Name, Id, Name", donde los dos primeros serían Id y Name para Branch Master y las columnas 3rd y 4th serían Id y Name para Zone Master.

Dadas las siguientes clases:

class Branch 
{
    int Id { get; set }
    string Name { get; set }
}

class Zone 
{
    int Id { get; set }
    string Name { get; set }
}

Y el siguiente formato de consulta SQL en su procedimiento almacenado:

SELECT b.Id, b.Name, z.Id, z.Name
FROM Branch b LEFT JOIN Zone z ON b.ZoneId = z.Id 

Deberías poder usar este código apuesto:

var result = connection.Query<Branch, Zone, Branch> ("myStoredProcName", 
    (objBranch, objZone) => { objBranch.ZoneMaster = objZone; return objBranch; }, 
    param, commandType: CommandType.StoredProcedure).ToList();


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow