我一直在阅读Dapper的Multi Mapping文档,但仍然感到困惑。
这是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();
令我困惑的是变量post
和user
来自哪里?我看到这一行......
connection.Query<Post, User, Post>
Post
和User
是模型,我明白..
(post, user) => { post.Owner = user; return post;}
是一个定义映射的函数,但post
和user
在哪里实例化?
它是一个Lambda函数。不知道技术解释,但基本上connection.Query返回多个记录,每个记录包含一个帖子和用户根据查询。使用(post,user)=>您宣布帖子将代表帖子,用户将代表每条记录的用户。