Dapper avec multimapping en utilisant la procédure stockée

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

Question

Ceci concerne Dapper dans ASP.NET MVC3.

J'ai deux tables tblBranchMaster , tblZoneMaster dans ma base de données et deux fichiers de classe avec les mêmes détails.

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

Les deux tables ayant une relation de clé étrangère de clé primaire.

J'ai une procédure stockée qui a la requête suivante:

Select * from tblBranchMaster;

avec d'autres trucs logiques.

Maintenant, comment devrais-je obtenir le résultat de la zone avec sa branche associée dans la liste.

J'ai le code suivant:

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

Ce code me donne l'erreur suivante:

Lorsque vous utilisez les API multi-mapping, assurez-vous de définir le paramètre splitOn si vous avez des clés autres que Id
Nom du paramètre: splitOn

Qu'est-ce que je rate???

Réponse populaire

Le résultat de la requête doit avoir le même format et le même ordre que les objets à remplir. Dans ce cas, dapper s'attend à ce que vous ayez "Id, Name, Id, Name", les deux premiers étant l'Id et le Name pour le maître de la branche et les 3ème et 4ème colonnes comme Id et Name pour le maître de la zone.

Compte tenu des classes suivantes:

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

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

Et le format de requête SQL suivant dans votre procédure stockée:

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

Vous devriez pouvoir utiliser ce code dapper:

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi