Я использую MVC.NET web api, EF с DB сначала, и у меня есть ленивая загрузка, отключенная в моем контексте. EF возвращает слишком много данных, даже если LazyLoading отключен.
Например, у меня есть пользователи с одной ролью. Когда я запрашиваю для Users и Include Role, свойство Role.Users автоматически заполняется данными, так как пользователи загружаются в контекст.
Почему я не могу заставить 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<User> Users { get; set; }
}
return db.Users.Include(u => u.Role);
// ^^ user.Role.Users is filled with 1000s of users
TL; DR - Я хочу, чтобы EF никогда не загружал данные в свойства/коллекции навигации, если я не включил() его напрямую. При сериализации в JSON я хочу только то, что я прошу явно. Похоже, что даже при ленивой загрузке загружаются и возвращаются свойства навигации, которые уже находятся в контексте (т.е. Обычно "круговые ссылки" ).