小巧玲珑的简单映射

表:

create table Documents (Id int, SomeText varchar(100), CustomerId int, CustomerName varchar(100) ) insert into Documents (Id, SomeText, CustomerId, CustomerName) select 1, '1', 1, 'Name1' union all select 2, '2', 2, 'Name2' 

类别:

 public class Document { public int Id { get; set; } public string SomeText { get; set; } public Customer { get; set; } } public class Customer { public int Id { get; set; } public string Name { get; set; } } 

如何通过Dapper与Customers一起获取所有Documents ? 这给了我所有文件,但客户是空的(当然):

 connection.Query("select Id, SomeText, CustomerId, CustomerName from Documents")... 

编辑 – 类似但更高级的映射问题: Dapper中间映射

从dapper项目页面获取的示例(请参阅Multi Mapping部分):

 var sql = @"select * from #Posts p left join #Users u on u.Id = p.OwnerId Order by p.Id"; var data = connection.Query(sql, (post, user) => { post.Owner = user; return post;}); var post = data.First(); post.Content.IsEqualTo("Sams Post1"); post.Id.IsEqualTo(1); post.Owner.Name.IsEqualTo("Sam"); post.Owner.Id.IsEqualTo(99); 
 var docs = connection.Query( "select Id, SomeText, CustomerId as [Id], CustomerName as [Name] from Documents", (doc, cust) => { doc.Customer = cust; return doc; }).ToList();