Entity Framework не будет обнаруживать изменения свойств навигации

У меня проблемы с обнаружением изменений свойства навигации:

Моя модель тестирования выглядит так:

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

Я создал и сохранил объект типа Person с назначенными свойствами Name и Address. Моя проблема в том, что если я получаю объект Person из базы данных и меняю свойство Address (например, на Null), то e.f. не обнаруживает изменения! Мой код такой:

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

Почемуentry.State Unchanged ?

Edit: Если я вызываю SaveChanges, запись сохраняется правильно (адрес становится нулевым)!

Edit 2: Я создал свойство внешнего ключа, как предложил Билли, и если я проверяю объект Person в визуальной студии, состояние изменяется. Если я не останавливаюсь с отладчиком, проверяющим значения объекта, состояние не изменяется!

Edit 3: Загрузка объекта Person с помощью ctx.People.Include (x = & xt; x.Address) .First (); решает проблему. Есть ли способ избежать вызова Include и продолжать изменять свойство Address вместо AddressId?

Ответы на вопрос(3)

Ваш ответ на вопрос