powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Загрузка связей при выборке с join'ом
10 сообщений из 10, страница 1 из 1
EF: Загрузка связей при выборке с join'ом
    #36428931
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую всех,

Возник вопросец относительно ЕФ и выборки объектов со связями (navigation properties). Проблема вот в чем, если я делаю выборку вида:

Код: plaintext
1.
List<Person> persons = (from p in cx.PersonSet.IncludeAllProperties()
                        select p).ToList();

, то полученные объекты содержат все необходимые мне ( указанные мною же ) связи.

Если мы делаем так ( например, в данной ситуации отношение М-М, поэтому нужен join ):

Код: plaintext
1.
2.
3.
List<Person> persons = (from p in cx.PersonSet.IncludeAllProperties()
                        from r in p.Roles
                        where string.Compare(r.Name, role, true) == 0
                        select p).ToList();

, то все связи полученных объектов пусты. Почему это происходит?

Я конечно могу сделать ForEach для полученных элементов с загрузкой всех связей, но хотелось бы получать их в момент выборки и не делать лишних движений.

ЗЫ кстати, в моих выборках используется самописный extension метод IncludeAllProperties, поэтому не пугайтесь, почему у вас такого нет ;)

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429036
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAHЗЫ кстати, в моих выборках используется самописный extension метод IncludeAllProperties, поэтому не пугайтесь, почему у вас такого нет ;)
Я уж образовался, что наконец-то добавили (подумал о четвёрке)
P.S. Показывайте IncludeAllProperties, что тут еще можно сказать.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429072
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ уж образовался, что наконец-то добавили (подумал о четвёрке)
оказывается не я один так жду поддержки этой вещи )))

МСУP.S. Показывайте IncludeAllProperties, что тут еще можно сказать.
тут ничего "страшного", как я думаю нет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public static ObjectQuery<Person> IncludeAllProperties(this ObjectQuery<Person> obj)
{
    return obj
        .Include("User")
        .Include("Roles")
        .Include("EducationLevel")
        .Include("TrainingQueues.Training")
        .Include("Company.Type")
        .Include("Company.Addresses.Type")
        .Include("Company.Addresses.City.Country")
        .Include("Teacher.Language")
        .Include("Teacher.SessionModules")
        .Include("Teacher.TrainingModules");
}

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429139
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAHтут ничего "страшного", как я думаю нет
Ну, как-бы да.

P.S. Смущает телодвижение

Код: plaintext
from r in p.Roles

Попробуйте через нормальный join:

Код: plaintext
1.
2.
3.
var persons = (from p in cx.PersonSet.IncludeAllProperties()
                    join r in cx.Roles on p.RoleId equals r.RoleId
                    where string.Compare(r.Name, role, true) == 0
                    select p).ToList();
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429163
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. Смущает телодвижение

Код: plaintext
from r in p.Roles

Попробуйте через нормальный join:

Код: plaintext
1.
2.
3.
var persons = (from p in cx.PersonSet.IncludeAllProperties()
                    join r in cx.Roles on p.RoleId equals r.RoleId
                    where string.Compare(r.Name, role, true) == 0
                    select p).ToList();

проблема в том, что свойства RoleId нет, т.к. ЕФ ведь имплементирует М-М в виде navigation properties.

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429171
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAHпроблема в том, что свойства RoleId нет, т.к. ЕФ ведь имплементирует М-М в виде navigation properties
Да, сорри, моя невнимательность.

Ну так а если Name роли доставать прям из самого cx.PersonSet. В сете, ведь, проинклюдены уже все связанные данные.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429182
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWYPMAHпроблема в том, что свойства RoleId нет, т.к. ЕФ ведь имплементирует М-М в виде navigation properties
Да, сорри, моя невнимательность.

Ну так а если Name роли доставать прям из самого cx.PersonSet. В сете, ведь, проинклюдены уже все связанные данные.

... через Constains.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429233
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ... через Constains.
не совсем понял эту идею, т.к. Constains в ЕФ не поддерживается, возможно, имелось ввиду какое-то другое применение, нежели в разделе where?

МСУНу так а если Name роли доставать прям из самого cx.PersonSet. В сете, ведь, проинклюдены уже все связанные данные.
а вот эта мысль натолкнула меня вот на такое решение:
Код: plaintext
1.
2.
List<Person> persons = (from p in cx.PersonSet.IncludeAllProperties()
                        where p.Roles.Where(r => string.Compare(r.Name, role, true) == 0).Count() > 0
                        select p).ToList();
вроде, работает ;)

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429259
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAHа вот эта мысль натолкнула меня вот на такое решение:
Код: plaintext
1.
2.
List<Person> persons = (from p in cx.PersonSet.IncludeAllProperties()
                        where p.Roles.Where(r => string.Compare(r.Name, role, true) == 0).Count() > 0
                        select p).ToList();
вроде, работает ;)

Ну я об этом по сути и говорил :

МСУНу так а если Name роли доставать прям из самого cx.PersonSet . В сете, ведь, проинклюдены уже все связанные данные.

:)
...
Рейтинг: 0 / 0
EF: Загрузка связей при выборке с join'ом
    #36429284
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу я об этом по сути и говорил
а, ну тогда всё понятно... спасибо за помощь ))))

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Загрузка связей при выборке с join'ом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]