Изменения документа Сценарии

Редактировал(а) Alexandr Fokin 2024/03/05 20:34

От версии 1.8
отредактировано Alexandr Fokin
на 2023/05/01 18:06
Изменить комментарий: К данной версии нет комментариев
К версии 1.15
отредактировано Alexandr Fokin
на 2023/05/02 17:52
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -16,15 +16,35 @@
16 16  
17 17  а именно BatchDataLoader, можно оптимизировать запросы и вычисления.
18 18  Есть возможность выполнить пакетную обработку, выполнив предварительное извлечение всех необходимых параметров
19 -(правда в виде одного объекта строки, но можно использовать сериализацию или отдельный Singlethon объект-хранилище в сочетании со Scoped типом регистрации),
19 +(правда в виде одного объекта строки, но можно использовать сериализацию или отдельный типизированный объект-хранилище в сочетании с типом регистрации Scoped),
20 20  в рамках обработки одного входящего запроса.
21 21  
22 22  ----
23 23  
24 24  3) При всех вышеуказанном, мы можем использовать в качестве сущности БД из [[EntityFramework | EntityFrameworkCore>>doc:Разработка.NET.Работа с БД.EntityFramework | EntityFrameworkCore.WebHome]] контекста, при этом имея встроенный механизм филтьрации [[IQurable>>doc:Разработка.NET.C#.Коллекции.IQurable.WebHome]].
25 +
26 +----
27 +
28 +{{code language="c#"}}
29 +public static void AddScalarResolver<TEntity, TType, TResolverType>(
30 + this IObjectTypeDescriptor<TEntity> descriptor,
31 + string fieldName
32 + )
33 + // Самодельный интерфейс для удобства, его нет в фреймворке.
34 + where TResolverType : IDataResolver<TType>
35 +{
36 + descriptor
37 + .Field(fieldName)
38 + .Type<ScalarType<TType>>()
39 + .ResolveWith<CustomDataResolver>(
40 + e => e.LoadAsync(default!, default)
41 + );
42 +}
43 +{{/code}}
25 25  )))
45 +|(% style="width:144px" %)Асинхронное выполнение запросов|(% style="width:1349px" %)async await.
46 +Если я ничего не напутал в своем тестовом проекте, то обнаружил, что при конфигурации контракта важно возвращать именно IAsyncEnumerable<T>, а не IQueryable<T> (DbSet<T> напрямую).
47 +Если этого не сделать, то фреймворк будет загружать данные из БД синхронно, не используя IAsyncEnumerator<T>.
26 26  |(% style="width:144px" %) |(% style="width:1349px" %)
27 27  |(% style="width:144px" %)[[Тестирование>>doc:Разработка.Тестирование.WebHome]]|(% style="width:1349px" %)GraphQL - How to write integration tests against Hot Chocolate
28 28  [[https:~~/~~/chillicream.com/blog/2019/04/11/integration-tests>>https://chillicream.com/blog/2019/04/11/integration-tests]]
29 -
30 -