J'ai deux classesDapper multi Mapping Résultat
public class Customer
{
public int CustomerId { get; set;}
public string CustomerName { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; } //BuyerCustomer
public int CustomerSecondId { get; set; } //ReceiverCustomer
public Customer BuyerCustomer { get; set; }
public Customer ReceiverCustomer { get; set; }
}
Voici ma requête ressemblera
SELECT a.*, b.*, c.* FROM dbo.PRODUCTS_ORDER a
INNER JOIN dbo.CUSTOMER b ON a.CustomerId=b.CustomerId
INNER JOIN dbo.CUSTOMER c ON a.CustomerSecondId=b.CustomerId
mise en œuvre Dapper ..
List<Order> order= null;
order= (List<Order>)dapperconnection.Query<Order, Customer, Customer, Order>(sql,
(order, customer1,customer2) =>
{
order.BuyerCustomer = customer1;
order.ReceiverCustomer = customer2;
return order;
}, splitOn: "CustomerId,CustomerSecondId ");
Le résultat que je reçois est incomplète , seul le RecevierCustomer est renseigné alors que BuyerCustomer ne contient aucune valeur.
Il semble que dapper est confus depuis que j'ai utilisé le CustomerId deux fois dans ma requête. Y a-t-il une solution de contournement sans avoir à modifier ma classe Customer?
Oh, désolé pour la faute de frappe. Je l'ai corrigé. Laissez-moi essayer de faire un test. Merci. – Derstine
Pourquoi dois-je supprimer Remove CustomerSecondId de Split? Honnêtement, je n'ai pas l'idée car j'en ai vraiment besoin pour les jointures. CustomerSecondId fait partie de la commande. – Derstine
Lorsque vous regardez le résultat de la requête SQL, vous avez Order suivi par Customer, Customer, puis nous divisons simplement deux enregistrements client par CustomerId. Je vais éditer le dernier point. –