title: Entity Framework Code First: Many to many self referencing, naming convention
body: <p><strong>Working example</strong></p>
  
  <pre><code>class Product
  {
     public int Id { get; set; }
     public string Name { get; set; }
  }
  
  class Color
  {
     public int Id { get; set; }
     public string Name { get; set; }
  }
  
  class ProductColor
  {
      public int Id { get; set; }
  
      [ForeignKey("ProductId")]
      public Product Product { get; set; }
      public int ProductId { get; set; }
  
      [ForeignKey("ColorId")]
      public Color Color { get; set; }
      public int ColorId { get; set; }
  }
  </code></pre>
  
  <p>After adding and applying migrations, when I add to Product list of ProductColors entity context will not be changed ( no need to add and apply new migration )</p>
  
  <pre><code>class Product
  {
      ...
      public virtual ICollection&lt;ProductColor&gt; ProductColors { get; set; }
  }
  </code></pre>
  
  <p>This is ok. </p>
  
  <p><strong>Not working example</strong></p>
  
  <p>But how name list inside the Product, if need to reference Products to Products ? For example</p>
  
  <pre><code>class ProductForm
  {
      public int Id { get; set; }
  
      [ForeignKey("ProductId")]
      public Product Product { get; set; }
      public int ProductId { get; set; }
  
      [ForeignKey("FormId")]
      public Product Form { get; set; }
      public int FormId { get; set; }
  
      public ProductType ProductType { get; set; }
  }
  </code></pre>
  
  <p>When I try to add list</p>
  
  <pre><code>class Product 
  {
      ...
      public virtual ICollection&lt;ProductForm&gt; ProductForms { get;set;}
  }
  </code></pre>
  
  <p>This will change entity context. This is wrong.</p>
  
  <p>Thanks.</p>