Le multimapping est une fonctionnalité de Dapper qui permet de renvoyer plusieurs types d'objets à partir d'une seule requête. Pour l'utiliser, fournissez une fonction de mappage qui attribue les données aux objets correspondants.
Dans votre exemple, vous essayez de mapper les ProductItems et les Customers à partir de la requête :
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" );
Cependant , vous rencontrez des problèmes pour renvoyer toutes les propriétés des clients. En effet, le paramètre splitOn indique les colonnes qui séparent deux objets. Si vous ne spécifiez pas CustomerName, Dapper suppose qu'il se trouve à la fin de l'ensemble de résultats et lui attribue la valeur null.
Pour résoudre ce problème, assurez-vous que CustomerId est spécifié en premier dans splitOn et que CustomerName est en deuxième. Cela divisera correctement l’ensemble de résultats. Toutefois, si l'ordre des colonnes dans le tableau change, cela peut entraîner des noms de clients nuls.
Remarque : Si l'ensemble de résultats comporte plusieurs points de partage, répertoriez-les dans un format délimité par des virgules. . Dapper divisera l'ensemble de résultats en plusieurs objets en fonction de ces points.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!