private void CreateEntityGraphType <TEntity>(IEntityType entityType) where TEntity : class { ObjectGraphType <TEntity> graphType; if (_graphTypeResolverSource.TryResolve(out graphType)) { return; } graphType = new ObjectGraphType <TEntity>(); _graphTypeResolverSource.AddResolver(() => graphType); foreach (var prop in entityType.GetProperties()) { var fieldGraphType = _typeMapper.FindMapping(prop); if (fieldGraphType == null) { // TODO handle unmapped clr types continue; } graphType.AddField(fieldGraphType, prop.GraphQL().FieldName, prop.GraphQL().Description); } foreach (var navigation in entityType.GetNavigations()) { AddNavigation(navigation, graphType); } }
public static void AddResolver <T>(this IGraphTypeResolverSource source, Func <T> resolver) where T : GraphType => source.AddResolver(typeof(T), resolver);