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 я хочу именно то, что я прошу явно. Кажется, что даже с отложенной загрузкой, свойства навигации, которые уже находятся в контексте (то есть обычно "циркулярные ссылки ") будет загружен и возвращен.