Играя с Dapper, я доволен результатами до сих пор - интригующе!
Но теперь мой следующий сценарий будет состоять в том, чтобы читать данные из двух таблиц - таблицы Student и Address.
 Student таблица имеет первичный ключ StudentID (INT IDENTITY), Address имеет AddressID (INT IDENTITY). Student также имеет FK, называемый AddressID, связанный с таблицей Address.
Моя идея состояла в том, чтобы создать два класса, по одному для каждой таблицы, со свойствами, которые меня интересуют. Кроме того, я поместил свойство PrimaryAddress типа Address в мой класс Student в С#.
Затем я попытался получить как студенческие, так и адресные данные в одном запросе - я сопоставляю образец, который указан на странице Github:
var data = connection.Query<Post, User>(sql, (post, user) => { post.Owner = user; });
var post = data.First();
Здесь извлекаются Post и a User, а владелец сообщения устанавливается пользователем - возвращаемый тип является Post - правильным?
Итак, в моем коде я определяю два параметра для общего метода расширения Query - a Student в качестве первого, который должен быть возвращен, а Address в качестве второго, который будет сохранен на экземпляр студента
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 });
Проблема - я получаю сообщение об ошибке в Visual Studio:
Используя общий метод "Dapper.SqlMapper.Query(System.Data.IDbConnection, строка, System.Func, динамическое, System.Data.IDbTransaction, bool, string, int?, System.Data.CommandType?) 'Требует 6 аргументы типа
Я действительно не понимаю, почему Dapper настаивает на использовании этой перегрузки с 6 аргументами типа...
