ScriptsJul 15, 2026·3 min read

graphql-dotnet — GraphQL Server Implementation for .NET

The leading open-source GraphQL library for .NET, providing a complete implementation of the GraphQL specification with schema-first and code-first APIs, middleware support, and seamless ASP.NET Core integration.

Agent ready

Ready-to-run agent install

This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.

Native · 98/100Policy: allow
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Single
Trust
Trust: Established
Entrypoint
graphql-dotnet
Direct install command
npx -y tokrepo@latest install 00a95528-8011-11f1-9bc6-00163e2b0d79 --target codex

Run after dry-run confirms the install plan.

Introduction

graphql-dotnet is the most widely adopted open-source GraphQL library for the .NET ecosystem. It provides a complete implementation of the GraphQL specification, allowing developers to build GraphQL APIs using C# with both schema-first (SDL) and code-first approaches. The library integrates naturally with ASP.NET Core and supports dependency injection, middleware pipelines, and popular serialization frameworks.

What graphql-dotnet Does

  • Implements the full GraphQL specification including queries, mutations, subscriptions, and introspection
  • Supports both schema-first development using SDL strings and code-first using C# type classes
  • Provides a middleware pipeline for field resolution, enabling cross-cutting concerns like authorization and caching
  • Integrates with ASP.NET Core through a companion package for HTTP endpoint hosting
  • Handles subscription operations over WebSocket with built-in transport support

Architecture Overview

graphql-dotnet is built around a document execution pipeline. Incoming query strings are parsed into a document AST, validated against the schema, and executed by resolving each field through registered field resolvers. The schema is constructed either from SDL with runtime wiring or from C# classes that inherit from ObjectGraphType. Field resolvers support async/await patterns natively. A middleware stack wraps field resolution, allowing behaviors like authorization checks, logging, and DataLoader integration to be applied declaratively. The serialization layer is pluggable, supporting System.Text.Json and Newtonsoft.Json.

Self-Hosting & Configuration

  • Install via NuGet: dotnet add package GraphQL plus a serializer package
  • Define schemas using SDL strings with Schema.For() or build them with C# classes extending ObjectGraphType
  • Host as an ASP.NET Core endpoint using the GraphQL.Server.Transports.AspNetCore package
  • Configure dependency injection to wire services into your field resolvers
  • Enable subscriptions by adding the WebSocket transport middleware

Key Features

  • Dual schema definition modes: SDL-first for rapid prototyping and code-first for full C# type safety
  • Field middleware pipeline for authorization, validation, metrics, and custom cross-cutting logic
  • Built-in complexity analysis to reject overly expensive queries before execution
  • DataLoader integration for batching and caching data fetcher calls across the query tree
  • Subscription support over WebSocket with configurable transport and serialization

Comparison with Similar Tools

  • Hot Chocolate — a newer .NET GraphQL server with a different API surface and built-in filtering/sorting; graphql-dotnet has a longer track record and larger community
  • graphql-java — the JVM equivalent; graphql-dotnet serves the same role for the .NET ecosystem
  • graphql-js — the JavaScript reference implementation; graphql-dotnet follows similar patterns adapted for C# idioms
  • Strawberry (Python) — a Python GraphQL library using dataclasses; graphql-dotnet uses C# classes and attributes
  • Juniper (Rust) — Rust GraphQL with macro-driven types; graphql-dotnet uses runtime type registration and reflection

FAQ

Q: Should I use graphql-dotnet or Hot Chocolate? A: Both are production-ready. graphql-dotnet has been around longer and has a large community. Hot Chocolate offers a more modern API with built-in features like filtering and pagination. Choose based on API style preference and your team's familiarity.

Q: Does graphql-dotnet work with Entity Framework? A: Yes. Field resolvers can use any data access layer including Entity Framework Core. Use DataLoader to batch EF queries and avoid the N+1 problem.

Q: How do I add authentication and authorization? A: graphql-dotnet provides field middleware and authorization validation rules. You can use the GraphQL.Authorization package to apply policy-based authorization at the field level, integrating with ASP.NET Core's built-in auth system.

Q: Can I use it with minimal APIs in .NET? A: Yes. While the traditional setup uses middleware, you can configure graphql-dotnet with minimal API endpoints in .NET 6+ for a lighter hosting model.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets