разница между двумя сегментами кода - PullRequest
0 голосов
/ 12 сентября 2011

В чем разница между

ObjectQuery<SalesOrderHeader> query =
context.Contacts.Include("SalesOrderHeaders").Include("SalesOrderDetails");

и

Contact contact =
context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails").FirstOrDefault();

Есть ли преимущество использования одного над другим? Мое основное замешательство - использование 2 Include в первом и использование 2 таблиц во втором Include. Заранее спасибо.

1 Ответ

1 голос
/ 12 сентября 2011

В платформе сущностей у вас есть нечто, называемое свойствами навигации (названное в вашей модели .edmx), так что вы можете получить доступ к связанным сущностям на их основе, другими словами, вы можете использовать свои свойства навигации для загрузки (включения) связанных данных.

Я предполагаю, что у вас есть такая связь: у одного контакта может быть много SalesOrderHeaders, а у одного SalesOrderHeader может быть много SalesOrderDetails, поэтому, если вы начинаете загрузку из сущности контактов и хотите, чтобы обе связи были загружены, вы должны сделать:

Contact contact = context.Contacts.Include("SalesOrderHeaders").Include("SalesOrderHeaders.SalesOrderDetails").FirstOrDefault();

Как вы можете видеть, мы используем сначала включение для доставки SalesOrderHeaders из БД, а второе - для доставки SalesOrderDetails через свойство навигации SalesOrderHeaders, поскольку мы начинаем с Контактов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...