EF codefirst: Czy powinienem zainicjować właściwości nawigacyjne?
Widziałem kilka książek (npkod ramowy podmiotu programującego najpierw Julia Lerman) zdefiniuj swoje klasy domen (POCO) bez inicjalizacji właściwości nawigacyjnych, takich jak:
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; }
}
niektóre inne książki lub narzędzia (npEntity Framework Power Tools) gdy generuje POCOs inicjalizuje właściwości nawigacyjne klasy, takie jak:
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; }
}
P1: Który jest lepszy? czemu? Plusy i minusy?Edytować:
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; }
}
P2: W drugim podejściu byłoby przepełnienie stosu, jeśli klasa `License` ma również odniesienie do klasy` User`. Oznacza to, że powinniśmy mieć odniesienie w jedną stronę. (?) Jak powinniśmy zdecydować, która z właściwości nawigacyjnych powinna zostać usunięta?