C# .NET Core 6.0 — использование Select при создании IQueryable происходит медленно, почему?C#

Место общения программистов C#
Anonymous
C# .NET Core 6.0 — использование Select при создании IQueryable происходит медленно, почему?

Сообщение Anonymous »

У нас есть DataTier. Внутри этого уровня данных находятся модели, представляющие различные таблицы/столбцы. Эти модели также связаны с соответствующим DbContext (назовите его OurDbContext).

Код: Выделить всё

public class Foo
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
В конкретном проекте я хочу добавить в Foo поле, которого нет в таблице.

Код: Выделить всё

public class Bar : Foo
{
public string Field3 { get; set; }
}
Я хочу создать IQueryable для отложенного выполнения.

Код: Выделить всё

IQueryable queryable = OurDbContext.Foo.FromSqlRaw(someSQl)
.AsNoTracking()
.Select(x => new Bar()
{
Field1 = x.Field1
Field2 = x.Field2
Field3 = null // null for now, we'll fill it in later
});
Когда вы смотрите на Intellisense, он говорит, что .Select возвращает IQueryable.
Но что я Как видите, в ту секунду, когда мы создаем IQueryable, он выполняет SQL (упс, я был неправ, просто медленно). Мы хотим использовать IQueryable с отложенным выполнением, чтобы мы могли пропускать или принимать 100 записей за раз через графический интерфейс.
Но создание IQueryable происходит медленно — что воняет.
РЕДАКТИРОВАТЬ:
Что я заметил, так это то, что во время отладки требуется 10-15 секунд, чтобы выполню одну строку кода выше, но если я сделаю это (нет .Select), это произойдет мгновенно (даже не за секунду):

Код: Выделить всё

IQueryable queryable = OurDbContext.Foo.FromSqlRaw(someSQl)
.AsNoTracking();
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/788 ... s-slow-why

Вернуться в «C#»