title: EF codefirst : Should I initialize navigation properties?
body: <p>I had seen some books(e.g <em>programming entity framework code first Julia Lerman</em>) define their domain classes (POCO) with no initialization of the navigation properties like:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public class User
  {
      public int Id { get; set; }
      public string UserName { get; set; }
  
      public virtual ICollection&lt;Address&gt; Address { get; set; }
      public virtual License License { get; set; }
  }
  </code></pre>
  
  <p>some other books or tools (e.g <em>Entity Framework Power Tools</em>) when generates POCOs initializes the navigation properties of the the class, like:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public class User
  {
      public User()
      {
          this.Addresses = new IList&lt;Address&gt;();
          this.License = new License();
      }
      public int Id { get; set; }
      public string UserName { get; set; }
  
      public virtual ICollection&lt;Address&gt; Addresses { get; set; }
      public virtual License License { get; set; }
  }
  </code></pre>
  
  <h3>Q1: Which one is better? why? Pros and Cons?</h3>
  
  <p><strong>Edit:</strong></p>
  
  <pre class="lang-cs prettyprint-override"><code>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; }
  }
  </code></pre>
  
  <h3>Q2: In second approach there would be stack overflow if the `License` class has a reference to `User` class too. It means we should have one-way reference.(?) How we should decide which one of the navigation properties should be removed?</h3>