Я определил некоторые модели, подобные этой (Entity Framework Code-First):
public class A
{
public int Id { get; set; }
public int Name { get; set; }
}
public class B
{
public int Id { get; set; }
public int Name { get; set; }
public virtual A ObjectA { get; set; }
}
// model update sample code
public void UpdateModel(int id, string name)
{
B objB = GetObjBByIdUsingLINQ(id); // this function gets the object using LINQ
if (objB != null) // <-- if you do a breakpoint here and inspect objB, objB.A != null
{
objB.Name = name;
dbContext.Entry(objB).State = EntityState.Modified;
dbContext.SaveChanges(); // <-- DbEntityValidationException here because objB.A == null
}
}
Когда я загружаю модель B из базы данных, я изменяю только имя и обновляю ее, я получаюследующая ошибка: Поле ObjectA является обязательным.
Я думаю, это потому, что ObjectA загружен с отложенным доступом.Однако, когда я добавляю точку останова после загрузки B из базы данных, а затем просматриваю содержимое B в проводнике переменных, загружается A, и обновление B не выдает ошибку.
Есть идеи, как решить эту проблему?