У меня возникли проблемы с обнаружением изменений свойства навигации:
Моя тестовая модель выглядит так:
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 (ex. в Null ), то э.ф. не обнаруживает изменения! Мой код такой:
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
Без изменений ?
Изменить:Если я вызову SaveChanges, запись сохранится правильно (Адрес станет нулевым )!
Редактировать 2:Я создал свойство внешнего ключа, как предложил Билли, и если я проверю объект Person в визуальной студии, состояние будет изменено. Если я не остановлюсь на отладчике, проверяющем значения объекта, состояние не изменится!
Редактировать 3:Загрузка объекта Person с помощью ctx.People.Include (x => x.Address ).First (); решает проблему.Есть ли способ избежать вызова Include и продолжать изменять свойство Address вместо свойства AddressId?