Cartographie d'une propriété à un champ d'une autre table dans NHibernate
-
21-09-2019 - |
Question
considérer la classe suivante:
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
qui est mis en correspondance à la table des commandes. Est-il possible de cartographier la propriété CustomerName à la table des clients par la relation clé étrangère?
La solution
Oui, vous pouvez utiliser le rejoindre élément de mappage pour cela. Une autre option consiste à tracer une vue au lieu d'une table. Mais si possible, vous devez prendre l'approche orientée objet et cartographier les nombreux à plusieurs entre l'ordre et le Client.
Autres conseils
Je vous suggère fortement de ne pas utiliser pour cette <join/>
. Bien qu'il accomplirait ce que vous avez demandé, il crée d'autres problèmes.
Au lieu de cela, l'ordre doit avoir une relation avec le client. Vous pouvez ensuite projeter le nom si vous voulez, bien qu'il soit plus facile à utiliser juste order.Customer.Name
.
Alors, il se résume à ceci:
1) Ajouter une propriété Customer
à Order
public virtual Customer Customer { get; set; }
2) Plan du bien (dans l'exemple, CustomerId est le nom de la colonne FK)
<many-to-one name="Customer" column="CustomerId"/>
3) Si vous voulez spécifiquement avoir une propriété CustomerName
, projet il du Client:
public virtual string CustomerName { get { return Customer.Name; } }