title: Entity Framework always includes data that is in context even if I don't ask for it
body: <p>I am using MVC.NET web api, EF with DB first, and I have lazy loading turned off on my context. EF is returning way too much data, even with LazyLoading turned off. </p>
  
  <p>For example, I have Users with one Role. When I query for Users and Include Role, the Role.Users property is automatically filled with data since Users have been loaded into the context.</p>
  
  <p>Why can't I get EF to give me JUST what I request? Or am I missing something big here?</p>
  
  <pre><code>public partial class User
  {
      public int UserID { get; set; }
      public string Title { get; set; }
      public string Email { get; set; }
      public int RoleID { get; set; }
  
      ....
  
      public virtual Role Role { get; set; }
  } 
  
  public partial class Role
  {
      public int RoleID { get; set; }
      public string RoleName { get; set; }
  
      ....
  
      public virtual ICollection&lt;User&gt; Users { get; set; }
  } 
  
  
  
  
  return db.Users.Include(u =&gt; u.Role);
  // ^^ user.Role.Users is filled with 1000s of users
  </code></pre>
  
  <p>TL;DR - I want EF to never load data into navigation properties/collections unless I .Include() it directly. When serializing to JSON I want just what I ask for explicitly. It seems that even with lazy loading off, navigation properties that are already in the context (ie usually "circular references") will be loaded and returned.</p>