EF codefirst: Soll ich die Navigationseigenschaften initialisieren?
Ich hatte einige Bücher gesehen (zProgrammierentität Framework-Code zuerst Julia Lerman) definieren ihre Domainklassen (POCO) ohne Initialisierung der Navigationseigenschaften wie:
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public virtual ICollection<Address> Address { get; set; }
public virtual License License { get; set; }
}
einige andere Bücher oder Werkzeuge (zEntity Framework-Elektrowerkzeuge) beim Erzeugen von POCOs werden die Navigationseigenschaften der Klasse initialisiert, wie:
public class User
{
public User()
{
this.Addresses = new IList<Address>();
this.License = new License();
}
public int Id { get; set; }
public string UserName { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
public virtual License License { get; set; }
}
F1: Welches ist besser? Warum? Vor-und Nachteile?Bearbeiten:
public class License
{
public License()
{
this.User = new User();
}
public int Id { get; set; }
public string Key { get; set; }
public DateTime Expirtion { get; set; }
public virtual User User { get; set; }
}
F2: Beim zweiten Ansatz würde ein Stapelüberlauf auftreten, wenn die Klasse `License` auch einen Verweis auf die Klasse` User` enthält. Dies bedeutet, dass wir eine Einwegreferenz haben sollten. (?) Wie sollen wir entscheiden, welche der Navigationseigenschaften entfernt werden sollen?