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?

questionAnswers(6)

yourAnswerToTheQuestion