2017-04-12 4 views
0

Ich bin durch Dapper's Multi Mapping documentation gegangen, aber bleiben verwirrt.Versucht, Dapper Multi Mapping zu verstehen

Dies ist das Beispiel von Dapper Dokumentation

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

Was mich verwirrt ist, wo die Variable post und user kam? Ich sehe in dieser Linie ...

connection.Query<Post, User, Post>

dass Post und User sind die Modelle und ich verstehe, dass ..

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

eine Funktion, die die Abbildung definiert, aber wo post und user instanziiert werden?

+0

Sie kommen nicht überall her, es ist ein [Lambda-Ausdruck] (https://msdn.microsoft.com/en-us/library/bb397687.aspx), gehen Sie etwas über sie lesen :) – DavidG

Antwort

1

Es ist eine Lambda-Funktion. Ich kenne die technische Erklärung nicht, aber grundsätzlich connection.Query gibt mehrere Datensätze zurück, die jeweils einen Post und einen Benutzer gemäß der Abfrage enthalten. Mit (post, user) => erklären Sie, dass der Beitrag den Beitrag darstellt und der Benutzer den Benutzer aus jedem Datensatz darstellt.

Verwandte Themen