Dynami c прокси дочерний объект = ноль не работает - PullRequest
0 голосов
/ 30 апреля 2020

Я переспрашиваю это из вопроса пару дней спустя 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()

1 Ответ

0 голосов
/ 30 апреля 2020

Хорошо, так что благодаря крошечной ленивой загрузке я снова обернулся на Include, о котором я говорил ранее, в поисках решения.

Это так же просто, как изменить Find в контексте выписка от

Parent parentToUpdate = _context.Parent.Find(1);

К

Parent parentToUpdate = _context.Parent.Include(x => x.Child).Where(x => x.Id == 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...