O Entity Framework sempre inclui dados que estão em contexto mesmo se eu não pedir
Eu estou usando o MVC.NET web api, EF com o DB primeiro, e tenho carregamento lento desligado no meu contexto. A EF está retornando muitos dados, mesmo com o LazyLoading desligado.
Por exemplo, eu tenho usuários com uma função. Quando eu consultar para usuários e incluir função, a propriedade Role.Users é preenchida automaticamente com dados desde que os usuários foram carregados no contexto.
Por que eu não consigo que a EF me dê apenas o que eu peço? Ou estou sentindo falta de algo grande aqui?
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<User> Users { get; set; }
}
return db.Users.Include(u => u.Role);
// ^^ user.Role.Users is filled with 1000s of users
TL; DR - Eu quero que o EF nunca carregue dados em propriedades de navegação / coleções, a menos que eu .Include () diretamente. Ao serializar para JSON, quero exatamente o que peço explicitamente. Parece que, mesmo com o carregamento lento, as propriedades de navegação que já estão no contexto (isto é, geralmente "referências circulares") serão carregadas e retornadas.