Сценарии
Вычисляемые и внешние данные. | 1) Используя механизм Extending Types можно добавить к сущности дополнительные поля, при этом также есть возможность указать кастомную логику заполнения полей (Resolver). public static void AddScalarResolver<TEntity, TType, TResolverType>( this IObjectTypeDescriptor<TEntity> descriptor, string fieldName ) // Самодельный интерфейс для удобства, его нет в фреймворке. where TResolverType : IDataResolver<TType> { descriptor .Field(fieldName) .Type<ScalarType<TType>>() .ResolveWith<TResolverType>( e => e.LoadAsync(default!, default) ); } 2) Добавив к вышеуказанному решению механизм DataLoader а именно BatchDataLoader, можно оптимизировать запросы и вычисления. 3) При всех вышеуказанном, мы можем использовать в качестве сущности БД из EntityFramework | EntityFrameworkCore контекста, при этом имея встроенный механизм выборки IQurable. |
Асинхронное выполнение запросов. | async await. UPD1: поведение наблюдается в некоторых версиях 12.*, в версии 13 поведение отличается. Но не все изучил до конца. |
Тестирование | GraphQL - How to write integration tests against Hot Chocolate https://chillicream.com/blog/2019/04/11/integration-tests |