J'ai un débat mental avec moi-même chaque fois que je commence à travailler sur un nouveau projet et que je conçois mes POCO. J'ai vu de nombreux tutoriels / exemples de code qui semblent favoriser les associations de clés étrangères :
Association de clé étrangère
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Contrairement aux associations indépendantes :
Association indépendante
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
J'ai travaillé avec NHibernate dans le passé et utilisé des associations indépendantes, qui non seulement se sentent plus OO, mais aussi (avec chargement paresseux) ont l'avantage de me donner accès à l'ensemble de l'objet Customer, au lieu de juste son ID. Cela me permet, par exemple, de récupérer une instance Order, puis de ne Order.Customer.FirstName
pas avoir à faire une jointure explicitement, ce qui est extrêmement pratique.
Donc, pour récapituler, mes questions sont:
- Le recours à des associations indépendantes présente-t-il des inconvénients importants? et...
- S'il n'y en a pas, quelle serait la raison d'utiliser des associations de clés étrangères?