J'ai deux POCO-s. A et B.
public class A{
[Slapper.AutoMapper.Id]
public int Id { get; set; }
public B BType { get; set; }
// Rest of the fields
}
public class B{
[Slapper.AutoMapper.Id]
public int Id { get; set; }
public string Name {get;set;}
}
Résultat de la procédure stockée T-SQL:
ID B_Id B_Name 1 1 B1 2 2 B2
Mon code pour obtenir la liste avec Dapper est:
List<A> aList = new List<A>();
using (IDbConnection connection = new SqlConnection(GlobalConfig.ConnectionString()))
{
var p = new DynamicParameters();
p.Add("@Id", someId);
// Here debug shows me 2 correct objects inside of var list
var list = connection.Query<dynamic>("[spApp_getBlaBlaByID]", p, commandType: CommandType.StoredProcedure);
// After casting I got only 1
aList =(Slapper.AutoMapper.MapDynamic<A>(list) as IEnumerable<A>).ToList();
}
return aList; // Debugging shows only 1 one of the objects
Alors, quel est le problème avec mon code? S'il vous plaît aider à trouver une erreur. PS je suis venu à C # de Java. Peut-être que dans le monde C # Slapper.Automapper n'est plus dans la tendance. Quelle est la solution flexible et moderne pour cartographier les POCO-s avec DAPPER?
Pour commencer, je ne comprends pas le besoin de Slapper ici. Dapper est capable de gérer ce rôle. Donc code quelque chose comme ci - dessous devrait fonctionner sans Tapette.
List<A> list = connection.Query<A>("[spApp_getBlaBlaByID]"......
Deuxièmement, voici ce que mentionne @ orhtej2 dans les commentaires. Le nom de la procédure stockée se termine par "ByID". Cette convention suggère de renvoyer un seul enregistrement. Êtes-vous sûr que SP renvoie plusieurs enregistrements? Si oui, l'exemple de code ci-dessus devrait faire. S'il renvoie un enregistrement unique, changez ci-dessus pour quelque chose comme ci-dessous:
A a = connection.Query<A>("[spApp_getBlaBlaByID]"......