powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [EF Core] Выборка данных
11 сообщений из 11, страница 1 из 1
[EF Core] Выборка данных
    #39670994
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положим есть следующая процедура

Код: c#
1.
2.
3.
4.
5.
6.
7.
var data = _db.Table.Where(...)
                    .OrderByDescending(...).ThenByDescending(...);

foreach (var v in data)
{
... 
}



EF генерит sql вида
Код: sql
1.
Select * from Table Where ...



Вопрос: в этом случае, если записей в выборку попадает много EF вытащит все записи на клиента сразу или будет их как-то подгружать частями, освобождая память от уже обработанных?
Будет ли поведение отличаться от случая если в запросе написать

Код: c#
1.
2.
var data = _db.Table.Where(...)
                    .OrderByDescending(...).ThenByDescending(...).ToList();



Зависит ли это от используемой СУБД?
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39670996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricEF генерит sql вида
предположил или сам посмотрел?

BlackEricEF вытащит все записи на клиента сразу или будет их как-то подгружать частями
частями т.к. в sql добавится кляуза для частей
BlackEricБудет ли поведение отличаться от случая если в запросе написать
отличие в том что этот кусок сразу придёт на клиента. Без него записи придут например на foreach(
BlackEricЗависит ли это от используемой СУБД?
должен. Но реально сам проверяй. У меня на постгри работает.
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671022
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricосвобождая память от уже обработанных?не будет освобождать, все закешируется в контексте пока существует контекст
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671023
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123частями т.к. в sql добавится кляуза для частейнет
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671079
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123предположил или сам посмотрел?

Разумеется посмотрел
Petro123BlackEricEF вытащит все записи на клиента сразу или будет их как-то подгружать частями
частями т.к. в sql добавится кляуза для частей


Не вижу я при работе с mariadb такого ограничения.
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671080
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProBlackEricосвобождая память от уже обработанных?не будет освобождать, все закешируется в контексте пока существует контекст

А когда-то же этот кеш сбрасывается? Если в выборке миллионы записей?
Кто за это отвечает: GC, EF или EF Provider?
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671160
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricНе вижу я при работе с mariadb такого ограничения.
IMHO
Значит экзотический зверь. Что тут сказать.

BlackEricА когда-то же этот кеш сбрасывается?
Драйвер или провайдер это черный ящик. Зачем сразу лезть внутрь?
Нарезка кусков прикладной уровень. Работа с памятью системный.
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671191
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricА когда-то же этот кеш сбрасывается? Если в выборке миллионы записей?Сбрасывается, когда уничтожается контекст. Зачем ты тащишь в контекст миллион записей, оно тебе надо? В принципе, можно отключит трекинг, но тут уже надо смотреть, как будет читаться - однонаправленным курсором параллельно выборке или все равно все в keyset в память загонит.


Тащить миллион записей на клиента в любом случае странно, для чего это нужно? Что не смогут решить возможности sql по агрегации и т.п.?
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671195
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Мне нужно рассчитывать рейтинг.
Для этого я должен перебрать все записи одной таблицы отсортированные по одному из полей и на основании этого заполнить другую. По алгоритму расчета мне нужно в любом случае перебрать всю таблицу.

Я пока сделал выборку через

Код: sql
1.
2.
var data = _db.Table.Where(...)
                    .OrderByDescending(...).ThenByDescending(...).Skip(N).Take(N);



где N перебирается в цикле. Вроде работает, но хочется понять как это делать корректно с точки зрения EF.
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671199
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricкак это делать корректно с точки зрения EF.
EF это объектный подход.
У тебя же выше в ТЗ вся бизнес логика БЛ) только про записи.
авторДля этого я должен перебрать все записи одной таблицы отсортированные по одному из полей и на основании этого заполнить другую. По алгоритму расчета мне нужно в любом случае перебрать всю таблицу.
Т.е. EF механизмы не работают в такой постановке.
Либо изменить ТЗ в терминах ООП, либо Linq\SQL запрос и получение частей-кусков записей.
...
Рейтинг: 0 / 0
[EF Core] Выборка данных
    #39671210
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо алгоритму расчета мне нужно в любом случае перебрать всю таблицу.
Начать с этого.
- почему такое странное условие? Перебор 5 млн.записей перекидывая их ЧЕРЕЗ клиент и сеть?
Удачи!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [EF Core] Выборка данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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