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

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

От версии 1.9
отредактировано Alexandr Fokin
на 2023/05/01 18:07
Изменить комментарий: К данной версии нет комментариев
К версии 1.16
отредактировано Alexandr Fokin
на 2023/05/02 18:04
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -22,9 +22,29 @@
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<TResolverType>(
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 -