Entity Framework no detectará cambios en las propiedades de navegación
Tengo problemas para detectar cambios en una propiedad de navegación:
Mi modelo de prueba se ve así:
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; }
}
He creado y guardado un objeto de tipo Persona con las propiedades de Nombre y Dirección asignadas. Mi problema es que si recupero el objeto Person de la base de datos y cambio la propiedad de Dirección (por ejemplo, a Null), la e.f. no detecta el cambio! Mi código es 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 esentry.State
Sin alterar ?
Editar: Si llamo a SaveChanges, el registro se guarda correctamente (la dirección se vuelve nula).
Edición 2: He creado la propiedad de la clave foránea tal como Billy sugirió y si inspecciono el objeto Person en el estudio visual, el estado se modifica.
Edición 3: Cargando el objeto Person usando ctx.People.Include (x => x.Address) .First (); resuelve el problema ¿Hay una manera de evitar llamar a Incluir y continuar modificando la propiedad de Dirección en lugar de la Dirección de Id.