https://github.com/epam/epam-graphql
https://github.com/epam/epam-graphql
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/epam/epam-graphql
- Owner: epam
- License: mit
- Created: 2021-12-13T09:56:55.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-14T09:59:53.000Z (over 2 years ago)
- Last Synced: 2025-11-09T05:19:31.647Z (9 months ago)
- Language: C#
- Size: 1.4 MB
- Stars: 23
- Watchers: 6
- Forks: 6
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Epam.GraphQL

[](https://codecov.io/gh/epam/epam-graphql)
[](https://github.com/epam/epam-graphql/actions/workflows/build.yml)
[](https://github.com/epam/epam-graphql/actions/workflows/publish.yml)




## Overview
**Epam.GraphQL** is a set of .NET libraries which provides a high-level way for building GraphQL APIs with a few lines of code, including (but not limited to) CRUD, batching, complex sorting and filtering, pagination.
We have built **Epam.GraphQL** on top of [GraphQL.NET](https://github.com/graphql-dotnet/graphql-dotnet/) to simplify developing GraphQL API layer:
* It is used by a dozen internal EPAM applications, battle-tested on complex tasks
* Highly declarative; can be seen as Low-Code platform done right
* Serves as architecture backbone for the whole app
* Makes APIs aligned and metadata-rich – allowing future features like admin UI generation
## Features
* Supports EntityFrameworkCore (e.g. querying only necessary fields from the database, disable change tracking when needed)
* Declarative CRUD (but you can write your own manual mutations as well)
* Gracefully solves [N+1 problem](https://medium.com/the-marcy-lab-school/what-is-the-n-1-problem-in-graphql-dd4921cb3c1a) by nested entities query batching with zero boilerplate code (but you can write your batches by yourself)
* [Relay connections](https://relay.dev/graphql/connections.htm) out-of-the-box
* Declarative filtering and search
* Declarative sorting
* Entity auto-mapping
* Master-details relationship between entities with a few lines of code
* Security
* ... and many more
## Documentation
* [Get Started](docs/01-get-started.md)
* [Core Concepts](docs/02-core-concepts.md)
* Querying Data
* [Resolving Fields](docs/querying/01-resolvers.md)
* [`FromIQueryable`](docs/querying/02-fromiqueryable.md)
* [Loaders](docs/querying/03-loaders.md)
* [Filtering](docs/querying/04-filtering.md)
* [Sorting](docs/querying/05-sorting.md)
* [Pagination](docs/querying/06-pagination.md)
* [N+1 Problem](docs/querying/07-n+1-problem.md)
* [`FromIQueryable`](docs/querying/07-n+1-problem/01-fromiqueryable.md)
* [`FromLoader`](docs/querying/07-n+1-problem/02-fromloader.md)
* [`FromBatch`](docs/querying/07-n+1-problem/03-frombatch.md)
* [Grouping](docs/querying/08-grouping.md)
* Entity Framework Core Usage
* [Auto-mapping](docs/ef-core/01-automapping.md)
## Packages
| Package | Downloads | NuGet Latest |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Epam.GraphQL | [](https://www.nuget.org/packages/Epam.GraphQL) | [](https://www.nuget.org/packages/Epam.GraphQL) |
| Epam.GraphQL.EntityFrameworkCore | [](https://www.nuget.org/packages/Epam.GraphQL.EntityFrameworkCore) | [](https://www.nuget.org/packages/Epam.GraphQL.EntityFrameworkCore) |
| Epam.GraphQL.MiniProfiler | [](https://www.nuget.org/packages/Epam.GraphQL.MiniProfiler) | [](https://www.nuget.org/packages/Epam.GraphQL.MiniProfiler) |
| Epam.GraphQL.SystemTextJson | [](https://www.nuget.org/packages/Epam.GraphQL.SystemTextJson) | [](https://www.nuget.org/packages/Epam.GraphQL.SystemTextJson) |
| Epam.GraphQL.NewtonsoftJson | [](https://www.nuget.org/packages/Epam.GraphQL.NewtonsoftJson) | [](https://www.nuget.org/packages/Epam.GraphQL.NewtonsoftJson) |
## License
[MIT](LICENSE.md)