Entity Framework erkennt keine Änderungen der Navigationseigenschaften

Ich habe Probleme beim Erkennen von Änderungen an einer Navigationseigenschaft:

Mein Testmodell sieht folgendermaßen aus:

public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }

    public string Name { get; set; }
}

Ich habe ein Objekt vom Typ Person mit zugewiesenen Eigenschaften Name und Adresse erstellt und gespeichert. Mein Problem ist, dass, wenn ich das Person-Objekt aus der Datenbank zurückhole und die Address-Eigenschaft (z. B. auf Null) ändere, der e.f. erkennt die Änderung nicht! Mein Code ist dieser:

using (var ctx = new EFContext())
{
    Person p = ctx.People.First();
    //p.Address IS NOT NULL!
    p.Address = null;
    var entry = ctx.Entry(p);
}

Warum istentry.State Unverändert ?

Bearbeiten: Wenn ich die SaveChanges aufrufe, wird der Datensatz korrekt gespeichert (die Adresse wird null)!

Bearbeiten 2: Ich habe die Fremdschlüsseleigenschaft wie vorgeschlagen erstellt und wenn ich das Objekt Person in Visual Studio inspiziere, wird der Status geändert. Wenn ich nicht damit aufhöre, dass der Debugger die Werte des Objekts inspiziert, wird der Status unverändert!

Edit 3: Laden des Person-Objekts mit ctx.People.Include (x => x.Address) .First (); löst das Problem. Gibt es eine Möglichkeit, den Aufruf von Include zu vermeiden und die Address-Eigenschaft anstelle der AddressId-Eigenschaft weiterhin zu ändern?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage