Marten

Learn how to integrate Marten with Hot Chocolate v16 for filtering, sorting, projections, and pagination.

The HotChocolate.Data package generally works with any LINQ provider that provides an IQueryable<T>. However, Marten requires special handling. Pagination and projections work out of the box, but filtering and sorting need LINQ expressions translated into a format that the Marten LINQ provider can process. This integration provides custom configurations for that purpose.

You can find a sample project in Hot Chocolate Examples.

Get Started

Install the HotChocolate.Data.Marten package:

Bash
dotnet add package HotChocolate.Data.Marten
Warning
All HotChocolate.* packages need to have the same version.

Filtering

Register the Marten filtering convention on the schema builder:

C#
builder
.AddGraphQL()
.AddQueryType<Query>()
.AddMartenFiltering();

Learn more about filtering.

Sorting

Register the Marten sorting convention on the schema builder:

C#
builder
.AddGraphQL()
.AddQueryType<Query>()
.AddMartenSorting();

Learn more about sorting.

Projections

Projections work out of the box with Marten. No custom configuration is needed.

Learn more about projections.

Paging

Pagination works out of the box with Marten. No custom configuration is needed.

Learn more about pagination.

Next Steps

Last updated on April 13, 2026 by Michael Staib