Multimapping ist eine Funktion in Dapper, die die Rückgabe mehrerer Objekttypen aus einer einzigen Abfrage ermöglicht. Um es zu verwenden, stellen Sie eine Zuordnungsfunktion bereit, die die Daten den entsprechenden Objekten zuordnet.
In Ihrem Beispiel versuchen Sie, ProductItems und Customers aus der Abfrage zuzuordnen:
var sql = @"select * from Product p inner join Customer c on p.CustomerId = c.CustomerId order by p.ProductName"; var data = con.Query<ProductItem, Customer, ProductItem>( sql, (productItem, customer) => { productItem.Customer = customer; return productItem; }, splitOn: "CustomerId,CustomerName" );
Allerdings , Sie haben Probleme mit der Rückgabe aller Kundeneigentümer. Dies liegt daran, dass der Parameter „splitOn“ die Spalten angibt, die zwei Objekte trennen. Wenn Sie CustomerName nicht angeben, geht Dapper davon aus, dass es sich am Ende des Ergebnissatzes befindet, und weist ihm null zu.
Um dieses Problem zu lösen, stellen Sie sicher, dass CustomerId zuerst in splitOn und CustomerName an zweiter Stelle angegeben wird. Dadurch wird die Ergebnismenge korrekt aufgeteilt. Wenn sich jedoch die Spaltenreihenfolge in der Tabelle ändert, kann dies zu null Kundennamen führen.
Hinweis: Wenn die Ergebnismenge mehrere Teilungspunkte aufweist, listen Sie diese in einem durch Kommas getrennten Format auf . Dapper teilt die Ergebnismenge basierend auf diesen Punkten in mehrere Objekte auf.
Das obige ist der detaillierte Inhalt vonWie kann ich das Multimapping von Dapper richtig nutzen, um alle Kundeneigenschaften abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!