Size: a a a

var chat = new Chat();

2021 March 28

VZ

Vitaliy Zayarniy in var chat = new Chat();
Гайз, ребят, подскажите, как наиболее оптимизировано вкинуть в выборке по айди дополнительное условие в include? ef core
источник

ВП

Влад Песков... in var chat = new Chat();
А что значит более оптимально?
источник

PD

Panda Dn in var chat = new Chat();
Всмысли по навигационному свойству?
источник

PD

Panda Dn in var chat = new Chat();
источник

VZ

Vitaliy Zayarniy in var chat = new Chat();
Влад Песков
А что значит более оптимально?
Ну, есть вариант типо такого :
_context.Configuration.LazyLoadingEnabled = false;
var allposts = _context.Posts.Where(t => t.PostAuthor.Id == postAuthorId)
                      .Select(e => new {
                          e,//for later projection
                          e.Comments,//cache Comments
                          //cache filtered Attachments
                          Attachments = e.Attachments.Where(a => a.Owner is Author),
                          e.PostAuthor//cache PostAuthor
                       })
                      .AsEnumerable()
                      .Select(e => e.e).ToList();
Но он в данном случае не подходит, ибо я полагаю, что будет медлительный.
На FirstOrDefault ничего не могу найти
источник

VZ

Vitaliy Zayarniy in var chat = new Chat();
Panda Dn
Всмысли по навигационному свойству?
Можно и так сказать
источник

VZ

Vitaliy Zayarniy in var chat = new Chat();
Есть такая фишка:
https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/whatsnew#filtered-include
Но мы к сожалению лишь на 2.1 коре, если не ошибаюсь
источник

ВП

Влад Песков... in var chat = new Chat();
Есть паттерн fetch strategy, неплохо подходит для того, чтобы определять, использовать ли в текущем запросе нужные инклюды или нет

А так же недавно открыл для себя ProjectToType() метод автомаппера, который инклюдит только то, что требуется
источник

ВП

Влад Песков... in var chat = new Chat();
источник

VZ

Vitaliy Zayarniy in var chat = new Chat();
Ну, это не совсем то, что подходит, но спасибо)
источник
2021 March 29

EG

Egor Gusarenko in var chat = new Chat();
Vitaliy Zayarniy
Ну, есть вариант типо такого :
_context.Configuration.LazyLoadingEnabled = false;
var allposts = _context.Posts.Where(t => t.PostAuthor.Id == postAuthorId)
                      .Select(e => new {
                          e,//for later projection
                          e.Comments,//cache Comments
                          //cache filtered Attachments
                          Attachments = e.Attachments.Where(a => a.Owner is Author),
                          e.PostAuthor//cache PostAuthor
                       })
                      .AsEnumerable()
                      .Select(e => e.e).ToList();
Но он в данном случае не подходит, ибо я полагаю, что будет медлительный.
На FirstOrDefault ничего не могу найти
Мне кажется тут лучше будет не гадать а посмотреть непосредственно запросы которые сгенерирует орм, где в качестве первого варианта будет инклюд а в качестве второго варианта такой и посмотреть их оптимальность "вживую"
источник

EG

Egor Gusarenko in var chat = new Chat();
Возможно инклюд с where даже лучше оптимизируется, я бы попытался посмотреть на примерах
источник

ПП

Покажи Прибыль... in var chat = new Chat();
источник

ПП

Покажи Прибыль... in var chat = new Chat();
help
источник

AK

Alex Kiev in var chat = new Chat();
Ммм детально
источник

ПП

Покажи Прибыль... in var chat = new Chat();
Приходят запросы
источник

ПП

Покажи Прибыль... in var chat = new Chat();
Одни и те же
источник

ПП

Покажи Прибыль... in var chat = new Chat();
источник

ПП

Покажи Прибыль... in var chat = new Chat();
А нафига замазывал
источник

ПП

Покажи Прибыль... in var chat = new Chat();
Не понятно
источник