2014-11-24 2 views
0

Есть ли способ привязать многие ко многим отношениям в нескольких таблицах к одному объекту в C# Linq, используя структуру сущности?C# Entity Framework Linq Присоединиться к одному из многих отношений во многих таблицах

В структуре Yii в php вы можете присоединиться к модели со многими отношениями. Каждый возвращает предопределенный массив отдельных моделей.

Например, у меня есть несколько продавцов, у которых есть несколько клиентов, у которых есть несколько заказов на продажу, у которых есть несколько пунктов заказа клиента. Есть ли способ вернуть 1 объект вместе со всеми этими данными?

Или было бы разделение нескольких запросов?

+0

Вам не нравится его принимать ответы на вопросы , не так ли? –

+0

Как только я нахожу решение, которое работает. – Demodave

+0

Ну, я рассказал вам, как это работает. Я ответил на ваш вопрос и все последующие вопросы. Я не буду писать ваш код. –

ответ

0

Я считаю, что если вы правильно настроили модель данных, EF будет обрабатывать это автоматически.

Скажите, если у вас есть отношение «многие ко многим» между таблицами People и Projects. Если вы создаете таблицу с именем PeopleProjects, чьи только два поля являются внешними ключами для двух таблиц, тогда EF создаст свойство коллекции «Проекты» на объекте People и свойство коллекции «Люди» на объекте «Проекты».

+0

Вы по-прежнему должны «включать» свойства навигации, которые хотите присоединиться к вашему набору результатов, в противном случае выбор одного объекта с множеством глубоких ссылок может привести к возврату всей вашей базы данных. –

0

Если вы хотите, чтобы убедиться, что не отложенная загрузка участвовать, это было бы так, чтобы пойти, чтобы получить все эти вещи в одном огромном графе объектов:

var obj = dbContext.Sellers.Include(
     r => r.Customers.Select(
      r2 => r2.SalesOrders.Select(
       r3 => r3.Items 
      ) 
     ) 
    ).SingleOrDefault(seller => seller.Id == id) 
+0

Можете ли вы присоединиться к столу с продавцом? Как хорошо .join (? – Demodave

+0

Вышеупомянутый оператор - это C# EF LINQ способ объединения материала. В результате SQL будет содержать объединения по всем таблицам, где находятся данные выше типов. Таким образом, будет один SQL-запрос с одним результирующим набором и EF будет отображать его на ваши типы. –

+0

Замечание: «join» - это реляционный язык, где «include» - это термин для графов объектов в EF. A include на стороне объекта приведет к соединению на бэкэнде реляционной памяти. –

Смежные вопросы