Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF - Стоит ограничивать список полей в запросе до JOIN? / 7 сообщений из 7, страница 1 из 1
19.11.2013, 11:34
    #38469572
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
Вот запрос. Я делаю выборку в анонимный тип для ограничения списка полей - до 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
19.11.2013, 12:13
    #38469636
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
user7320, сравните получаемые запросы. Скорее всего, чутье вас не подводит... Чем меньше многокилометровых лямбд, чем они компактнее, тем лучше... (возможно, что когда дело дойдет до рефакторинга или багфикса... ногами в лицо вас бить не станут... обойдутся просто парой обидных слов, возможно, даже вслух их не произнесут...)
...
Рейтинг: 0 / 0
19.11.2013, 13:24
    #38469782
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
buserЧем меньше многокилометровых лямбд, чем они компактнее, тем лучше... (возможно, что когда дело дойдет до рефакторинга или багфикса... ногами в лицо вас бить не станут... обойдутся просто парой обидных слов, возможно, даже вслух их не произнесут...)
LINQPad?
...
Рейтинг: 0 / 0
19.11.2013, 13:27
    #38469793
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
user7320Ориентируйся на план выполнения SQL запроса в MSSQL.
...
Рейтинг: 0 / 0
19.11.2013, 13:46
    #38469834
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
user7320, пуркуа бы и не пад... можно и свою трейсилку прикрутить... ну и планы сличайте, как уже заметили...
...
Рейтинг: 0 / 0
19.11.2013, 14:22
    #38469915
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
А как посмотреть этот план выполнения?
...
Рейтинг: 0 / 0
19.11.2013, 14:45
    #38469977
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF - Стоит ограничивать список полей в запросе до JOIN?
user7320А как посмотреть этот план выполнения?MSSQL Profiler.
MSSQL Management Studio.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF - Стоит ограничивать список полей в запросе до JOIN? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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