O Entity Framework não detectará alterações nas propriedades de navegação

Estou com problemas para detectar alterações de uma propriedade de navegação:

Meu modelo de teste é assim:

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; }
}

Eu criei e salvei um objeto do tipo Person com as propriedades Name e Address atribuídas. Meu problema é que, se eu buscar o objeto Person de volta do banco de dados e alterar a propriedade Address (ex. Para Null), então o e.f. não detecta a mudança! Meu código é este:

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

Por que éentry.State Inalterado ?

Editar: Se eu chamar o SaveChanges, o registro é salvo corretamente (o endereço fica nulo)!

Editar 2: Eu criei a propriedade de chave estrangeira como sugerido e se eu inspecionar o objeto Person no Visual Studio, o estado é modificado. Se eu não parar com o depurador inspecionando os valores do objeto, o estado é Unchanged!

Editar 3: Carregando o objeto Person usando ctx.People.Include (x => x.Address) .First (); resolve o problema. Existe uma maneira de evitar a chamada Incluir e continuar a modificar a propriedade de endereço em vez da propriedade AddressId?

questionAnswers(3)

yourAnswerToTheQuestion