powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF - Стоит ограничивать список полей в запросе до JOIN?
7 сообщений из 7, страница 1 из 1
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469572
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот запрос. Я делаю выборку в анонимный тип для ограничения списка полей - до join. Мне что-то подсказывает, что достаточно самого последнего ограничения (где (person, membershipUser) => new). Как лучше?

Есть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
var personData =
    db.Person
    .Where(p => p.PersonId == currentUserId)
    .Select(p => new
    {
        UserId = p.PersonId,
        Name = p.PersonName,
        Surname = p.PersonSurname,
        Patronymic = p.PersonPatronymic
    })
    .Join(
        db.Membership.
            Where(m => m.UserId == currentUserId)
            .Select(m => new
            {
                UserId = m.UserId,
                UserName = m.Users.UserName,
                Email = m.Email
            }),
        person => person.UserId,
        membershipUser => membershipUser.UserId,
        (person, membershipUser) => new
            {
                UserId = person.UserId,
                UserName = membershipUser.UserName,
                Name = person.Name,
                Surname = person.Surname,
                Patronymic = person.Patronymic,
                Email = membershipUser.Email
            })
    .First();



Что-то подсказывает, что так лучше:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var personData =
    db.Person
    .Where(p => p.PersonId == currentUserId)
    .Join(
        db.Membership.
            Where(m => m.UserId == currentUserId)
        person => person.UserId,
        membershipUser => membershipUser.UserId,
        (person, membershipUser) => new
            {
                UserId = person.UserId,
                UserName = membershipUser.UserName,
                Name = person.Name,
                Surname = person.Surname,
                Patronymic = person.Patronymic,
                Email = membershipUser.Email
            })
    .First();
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469636
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, сравните получаемые запросы. Скорее всего, чутье вас не подводит... Чем меньше многокилометровых лямбд, чем они компактнее, тем лучше... (возможно, что когда дело дойдет до рефакторинга или багфикса... ногами в лицо вас бить не станут... обойдутся просто парой обидных слов, возможно, даже вслух их не произнесут...)
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469782
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserЧем меньше многокилометровых лямбд, чем они компактнее, тем лучше... (возможно, что когда дело дойдет до рефакторинга или багфикса... ногами в лицо вас бить не станут... обойдутся просто парой обидных слов, возможно, даже вслух их не произнесут...)
LINQPad?
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469793
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ориентируйся на план выполнения SQL запроса в MSSQL.
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469834
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, пуркуа бы и не пад... можно и свою трейсилку прикрутить... ну и планы сличайте, как уже заметили...
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469915
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как посмотреть этот план выполнения?
...
Рейтинг: 0 / 0
EF - Стоит ограничивать список полей в запросе до JOIN?
    #38469977
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А как посмотреть этот план выполнения?MSSQL Profiler.
MSSQL Management Studio.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF - Стоит ограничивать список полей в запросе до JOIN?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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