J'ai deux tables. Facture avec les colonnes CustomerID, InvoiceDate, Value, InvoiceTypeID (CustomerID et InvoiceDate forment une clé composite) et InvoiceType avec les colonnes InvoiceTypeID et InvoiceTypeName.
Je sais que je peux créer mes objets comme :
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceType InvoiceType { get; set; }
}
public class InvoiceType
{
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
Ainsi, le sql généré ressemblerait à quelque chose comme :
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID FROM Invoice WHERE CustomerID = x AND InvoiceDate = y
SELECT InvoiceTypeID, InvoiceTypeName FROM InvoiceType WHERE InvoiceTypeID = z
Mais plutôt que d'avoir deux requêtes sélectives exécutées pour récupérer les données, je préférerais en avoir une seule. J'aimerais également éviter d'utiliser un objet enfant pour de simples listes de consultation. Donc mon objet ressemblerait à quelque chose comme :
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
Et mon SQL ressemblerait à quelque chose comme :
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID
FROM Invoice INNER JOIN InvoiceType ON Invoice.InvoiceTypeID = InvoiceType.InvoiceTypeID
WHERE CustomerID = x AND InvoiceDate = y
Ma question est la suivante : comment créer la cartographie pour cela ?
J'ai essayé d'utiliser la fonction de jointure, mais j'ai essayé de joindre en utilisant CustomerID et InvoiceDate, est-ce que j'ai manqué quelque chose d'évident ?
Merci