5

テーブル:

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; }
}

DapperDocumentsを使用してすべてを取得するにはどうすればよいですか? Customersこれにより、すべてのドキュメントが得られますが、顧客は null です (もちろん):

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

編集 - 似ていますが、より高度なマッピングの質問: Dapper 中間マッピング

4

2 に答える 2

6

dapper プロジェクト ページからの例(「マルチ マッピング」セクションを参照):

var sql = 
@"select * from #Posts p 
left join #Users u on u.Id = p.OwnerId 
Order by p.Id";

var data = connection.Query<Post, User, Post>(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);
于 2012-04-16T08:39:08.697 に答える
4
var docs = connection.Query<Document, Customer, Document>(
    "select Id, SomeText, CustomerId as [Id], CustomerName as [Name] from Documents",
    (doc, cust) => { doc.Customer = cust; return doc; }).ToList();
于 2012-04-16T08:45:12.843 に答える