Ne pouvez pas obtenir multi-cartographie de travailler dans Dapper

Jouer avec Dapper, je suis très heureux avec les résultats de la mesure - intrigants!

Mais maintenant, mon prochain scénario serait de lire les données de deux tables - un Student et un Address table.

Student table possède une clé primaire de StudentID (INT IDENTITY), Address a un AddressID (INT IDENTITY). Student a aussi un FK appelé AddressID de la liaison dans le Address table.

Mon idée était de créer deux classes, une pour chaque table, avec les propriétés que je suis intéressé. En outre, j'ai mis une PrimaryAddress propriété de type Address sur mon Student classe en C#.

J'ai ensuite essayé de récupérer à la fois des étudiants et des données d'adresse en une seule requête - je imiter l'exemple qui est donné sur le Page Github:

var data = connection.Query<Post, User>(sql, (post, user) => { post.Owner = user; });
var post = data.First();

Ici, un Post et un User sont récupérés, et le propriétaire de la poste est défini pour l'utilisateur, le type retourné est un Post - il correct?

Donc dans mon code, j'définir deux paramètres pour le générique Query méthode d'extension - un Student que le premier qui doit être retourné, et un Address que le second, qui seront stockées sur l'étudiant exemple:

var student = _conn.Query<Student, Address>
                  ("SELECT s.*, a.* FROM dbo.Student s 
                        INNER JOIN dbo.Address a ON s.AddressID = a.AddressID 
                        WHERE s.StudentenID = @Id", 
                    (stu, adr) => { stu.PrimaryAddress = adr; },  
                    new { Id = 4711 });

Problème est - j'obtiens une erreur dans Visual Studio:

À l'aide de la méthode générique
'Dapper.SqlMapper.Requête(Système D'.Les données.IDbConnection,
chaîne,
Système.Func,
dynamique du Système.Les données.IDbTransaction,
bool, string, int?,
Système.Les données.CommandType?)' nécessite 6
les arguments de type

Je ne comprends vraiment pas pourquoi Dapper insiste sur l'utilisation de cette surcharge avec 6 arguments de type...

J'ai eu exactement le même problème et il m'a fallu un certain temps à comprendre pourquoi est - ce que Sam explique!

OriginalL'auteur marc_s | 2011-05-14