Je suis en train de construire l'association suivante dans NHibernate (la classe de base de l'entité contient une propriété Id, et les attributs sont de S # arp architecture)cartographie des références complexes dans NHibernate
public class Terminal : Entity {
public virtual string Name { get; set; }
}
public class Order : Entity {
[NotNull]
public virtual Terminal Terminal { get; set; }
}
Lorsque les données sur la commande est stockée dans ORDERS et les données sur les terminaux sont stockées dans les tables TERMINALS. Le problème est qu'il n'y a pas de lien direct entre les deux tables. Si j'avais un identifiant pour ORDERS.ORDER_ID je chercherais la ligne TERMINALS correspondante avec le SQL suivant.
select t.*
from ORDERS o
inner join cust_prod cp on (o.CUST_PROD_ID = cp.CUST_PROD_ID)
inner join customer_terminal ct on (cp.CUSTOMER_TERMINAL_ID = ct.CUSTOMER_TERMINAL_ID)
inner join terminal t on (ct.TERMINAL_ID = t.TERMINAL_ID)
where o.ORDER_ID = :p_order_id
Comment puis-je mapper ceci dans NHibernate? De préférence, comment puis-je mapper cela dans Fluent NHibernate mais je pense que je pourrais le comprendre à partir du XML. Aussi, étant donné que la base de données avec laquelle je travaille est pleine de chaînes comme celle-ci, y a-t-il des suggestions de bonnes pratiques?
Quelles sont les classes de client et de commande? – Paco
Je ne sais pas ce que tu veux dire. J'ai donné une description complète de la classe de commande et même si j'ai un cours Client, son existence est orthogonale au problème en question. –
Je ne vois pas ce que vous voulez faire avec la jointure interne cust_prod cp sur (o.CUST_PROD_ID = cp.CUST_PROD_ID) et client_terminal ct sur (cp.CUSTOMER_TERMINAL_ID = ct.CUSTOMER_TERMINAL_ID) – Paco