Отключает ли сущность Entity Framework от своих дочерних элементов? - PullRequest
0 голосов
/ 23 октября 2019

Я подтягиваю сущность. Например, поправка к транзакции

                var amendment = _context.TransactionAmendments
                .Include(ta => ta.SourceTransaction)
                    .ThenInclude(ti => ti.Account)
                        .ThenInclude(accnt => accnt.ClientAccount)
                .Include(ta => ta.SourceTransaction)
                    .ThenInclude(ti => ti.Person)
                        .ThenInclude(a => a.Contact)
                .Include(ta => ta.SourceTransaction)
                    .ThenInclude(ti => ti.Client)
                        .ThenInclude(a => a.Holder)
                .FirstOrDefaultAsync(ta => ta.Id == amendmentId);

Затем я хочу получить всю информацию свежим, поэтому я установил состояние amendment как отсоединенное _context.Entry(amendment).State = EntityState.Detached;

Будет ли все дочерние элементы amendment также будет отсоединен, чтобы при повторном запуске вышеупомянутого запроса все было обновлено?

1 Ответ

1 голос
/ 23 октября 2019

Когда вы отсоединяете родительский объект от контекста, вы также отключаете отложенную загрузку дочерних объектов. Вы можете использовать метод Include для загрузки необходимых потомков, используя Eager Loading.

Стремительная загрузка - это процесс, при котором запрос для одного типа объекта также загружает связанные объекты как часть запроса.

Как описано в MSDN :

  • Отключение влияет только на конкретный объект, который передается методу. Если отсоединяемый объект имеет связанные объекты в контексте объекта, эти объекты не отсоединяются.

  • Отсоединение объектов не влияет на данные в источнике данных.

  • Каскадные директивы удаления и ссылочные ограничения не применяются во время операции отсоединения.

...