Entity Framework enthält immer Daten, die im Kontext sind, auch wenn ich nicht danach frage

Ich verwende zuerst MVC.NET-Web-API, EF mit DB, und in meinem Kontext ist das verzögerte Laden deaktiviert. EF gibt viel zu viele Daten zurück, auch wenn LazyLoading deaktiviert ist.

Zum Beispiel habe ich Benutzer mit einer Rolle. Wenn ich nach Benutzern und Rolle einbeziehe, wird die Eigenschaft Role.Users automatisch mit Daten gefüllt, da Benutzer in den Kontext geladen wurden.

Warum kann ich EF nicht dazu bringen, mir NUR das zu geben, was ich verlange? Oder vermisse ich hier etwas Großes?

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 - Ich möchte, dass EF niemals Daten in Navigationseigenschaften / -sammlungen lädt, es sei denn, ich beziehe sie direkt ein (). Bei der Serialisierung auf JSON möchte ich genau das, wonach ich ausdrücklich frage. Es sieht so aus, als würden auch bei verzögertem Laden Navigationseigenschaften, die sich bereits im Kontext befinden (dh normalerweise "Zirkelverweise"), geladen und zurückgegeben.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage