Entity Framework всегда включает в себя данные, которые находятся в контексте, даже если я не прошу их

Я использую веб-API MVC.NET, сначала EF с БД, и в моем контексте отключена отложенная загрузка. EF возвращает слишком много данных, даже если LazyLoading отключен.

Например, у меня есть пользователи с одной ролью. Когда я запрашиваю пользователей и включаю роль, свойство Role.Users автоматически заполняется данными, поскольку пользователи были загружены в контекст.

Почему можноt Я получаю EF, чтобы дать мне ТОЛЬКО то, что я прошу? Или я что-то здесь упускаю?

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 Users { get; set; }
} 




return db.Users.Include(u => u.Role);
// ^^ user.Role.Users is filled with 1000s of users

TL; DR - я хочу, чтобы EF никогда не загружал данные в свойства / коллекции навигации, если только я .Include () их напрямую. При сериализации в JSON я хочу именно то, что я прошу явно. Кажется, что даже с отложенной загрузкой, свойства навигации, которые уже находятся в контексте (то есть обычно "циркулярные ссылки ") будет загружен и возвращен.

Ответы на вопрос(5)

Ваш ответ на вопрос