title: What is the difference between DbSet<> and virtual DbSet<>?
body: <p>In Entity Framework Code First, when I declare entities I have to use DbSet&lt;> type of properties for that. For example:</p>
  
  <pre><code>public DbSet&lt;Product&gt; Products { get; set; }
  public DbSet&lt;Customer&gt; Customers { get; set; }
  </code></pre>
  
  <p>Recently I've met DbSet&lt;> declared as virtual.</p>
  
  <pre><code>public virtual DbSet&lt;Product&gt; Products { get; set; }
  public virtual DbSet&lt;Customer&gt; Customers { get; set; }
  </code></pre>
  
  <p>What is the difference? What EF functionalities is enabled?</p>