Jedes Mal, wenn ich an einem neuen Projekt arbeite und meine POCOs entwerfe, habe ich eine mentale Debatte mit mir. Ich habe viele Tutorials / Codebeispiele gesehen, die Fremdschlüsselassoziationen zu bevorzugen scheinen :
Fremdschlüsselzuordnung
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Im Gegensatz zu unabhängigen Vereinen :
Unabhängiger Verein
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Ich habe in der Vergangenheit mit NHibernate gearbeitet und unabhängige Assoziationen verwendet, die sich nicht nur mehr OO anfühlen, sondern auch (bei verzögertem Laden) den Vorteil haben, dass ich auf das gesamte Kundenobjekt anstatt nur auf dessen ID zugreifen kann. Auf diese Weise kann ich beispielsweise eine Order-Instanz abrufen und dann Order.Customer.FirstName
ohne expliziten Join auskommen, was äußerst praktisch ist.
Um es noch einmal zusammenzufassen, meine Fragen sind:
- Gibt es signifikante Nachteile bei der Verwendung unabhängiger Verbände? und...
- Wenn es keine gibt, was wäre der Grund für die Verwendung von Fremdschlüsselzuordnungen?