试图了解Dapper Multi Mapping

时间:2017-04-12 13:31:53

标签: c# dapper

我一直在经历Dapper's Multi Mapping documentation,但仍感到困惑。

这是Dapper文档中的示例

class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public User Owner { get; set; }
}

class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

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();

让我感到困惑的是变量postuser来自哪里?我在这行看到......

connection.Query<Post, User, Post>

PostUser是模型,我理解......

(post, user) => { post.Owner = user; return post;}

是一个定义映射的函数,但postuser在哪里实例化?

1 个答案:

答案 0 :(得分:1)

它是一个Lambda函数。不知道技术解释,但基本上connection.Query返回多个记录,每个记录包含一个帖子和用户根据查询。用(post,user)=&gt;您宣布该帖子将代表帖子,用户将代表每条记录的用户。