Я переспрашиваю это из вопроса пару дней спустя go, теперь я решил проблему.
Два простых объекта:
public class Parent
{
public int Id { get; set; }
public virtual Child Child { get; set; }
public string Name { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
}
I найти объект Parent
, используя метод DbContext
, например:
Parent parentToUpdate = _context.Parent.Find(1);
Этот объект уже оборудован заполненным потомком, скажем, с идентификатором 22, сгенерированным как System.Data.Entity.DynamicProxy
I затем иметь новый дочерний объект, который становится нулевым, потому что он не был найден в базе данных, используя тот же DbContext:
Child newChild = _context.Child.Find(999); // returns null
Затем я пытаюсь перезаписать дочерний объект parentToUpdate
с помощью newChild
объект:
parentToUpdate.Child = newChild;
Я ожидаю, что .Child
станет нулевым - Это не сработает , пока я не пройдусь по коду - parentToUpdate.Child
не станет нулевым!
ПОЧЕМУ? и Как я могу аннулировать мой parentToUpdate.Child
объект? , прежде чем я _context.SaveChanges()