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?