# Marten > .NET Transactional Document DB and Event Store on PostgreSQL Pragmatic library to boost your developer productivity! ## Table of Contents ### Introduction - [Introduction](/introduction.md): Introduction to Marten, the .NET transactional document database and event store built on PostgreSQL with JSONB support, LINQ querying, and full event sourcing. - [Getting Started](/getting-started.md): Get started with Marten in your .NET application. Install the NuGet package, configure the document store, and start storing and querying documents in minutes. - [Support Policy](/support-policy.md) ### Configuration - [Bootstrapping Marten](/configuration/hostbuilder.md): Configure and bootstrap Marten in ASP.NET Core and .NET applications using AddMarten(), dependency injection, and IHostBuilder integration. - [Composite Configuration Across Satellite Assemblies](/configuration/composite-configuration.md) - [Configuring Document Storage with StoreOptions](/configuration/storeoptions.md) - [Json Serialization](/configuration/json.md) - [Resiliency Policies](/configuration/retries.md) - [Command Line Tooling](/configuration/cli.md) - [JasperFx Commands in the Aspire Dashboard ](/configuration/aspire-commands.md) - [Optimized Development Workflow](/configuration/optimized_artifact_workflow.md) - [Publishing Marten with Native AOT](/configuration/aot-publishing.md) - [Multi-Tenancy with Database per Tenant](/configuration/multitenancy.md): Configure multi-tenancy in Marten with database-per-tenant, conjoined tenancy, sharded databases, master table routing, and dynamic tenant provisioning. - [Environment Checks](/configuration/environment-checks.md) - [Custom IoC Integration](/configuration/ioc.md) ### Document Database - [Marten as Document DB](/documents.md): Use Marten as a document database on PostgreSQL. Store, query, and manage .NET objects as JSON documents with LINQ support, full-text search, and multi-tenancy. - [Document Identity](/documents/identity.md) - [Database Storage](/documents/storage.md) - [Marten Metadata](/documents/metadata.md) - [Opening Sessions](/documents/sessions.md) - [Storing Documents](/documents/storing.md) - [Deleting Documents](/documents/deletes.md) - [PostgreSQL Sequences ](/documents/sequences.md) - [Querying Documents](/documents/querying.md) - [Indexing Documents](/documents/indexing.md) - [Execute custom SQL in session](/documents/execute-custom-sql.md) - [Document Hierarchies](/documents/hierarchies.md) - [Multi-Tenanted Documents](/documents/multi-tenancy.md) - [Initial Baseline Data](/documents/initial-data.md) - [Optimistic Concurrency](/documents/concurrency.md) - [Full Text Searching](/documents/full-text.md) - [PostGIS Spatial Support](/documents/postgis.md) - [pgvector Support](/documents/pgvector.md) - [Noda Time Support](/documents/noda-time.md) - [Partial updates/patching](/documents/partial-updates-patching.md) - [Marten.AspNetCore](/documents/aspnetcore.md) #### Querying Documents - [Loading Documents by Id](/documents/querying/byid.md) - [Checking Document Existence](/documents/querying/check-exists.md) - [Querying Documents with Linq](/documents/querying/linq.md) - [Supported Linq Operators](/documents/querying/linq/operators.md) - [Querying within Child Collections](/documents/querying/linq/child-collections.md) - [Including Related Documents](/documents/querying/linq/include.md) - [Joining Documents with GroupJoin](/documents/querying/linq/group-join.md) - [Querying to IAsyncEnumerable](/documents/querying/linq/async-enumerable.md) - [Extending Marten's Linq Support](/documents/querying/linq/extending.md) - [Searching on String Fields](/documents/querying/linq/strings.md) - [Projection Operators](/documents/querying/linq/projections.md) - [Paging](/documents/querying/linq/paging.md) - [Mixing Raw SQL with Linq](/documents/querying/linq/sql.md) - [Searching with Boolean Flags](/documents/querying/linq/booleans.md) - [Searching for NULL Values](/documents/querying/linq/nulls.md) - [Querying with Postgresql SQL](/documents/querying/sql.md) - [Advanced querying with Postgresql SQL](/documents/querying/advanced-sql.md) - [Query for Raw JSON](/documents/querying/query-json.md) - [Compiled Queries and Query Plans](/documents/querying/compiled-queries.md) - [Batched Queries](/documents/querying/batched-queries.md) #### Indexing Documents - [Calculated Index](/documents/indexing/computed-indexes.md) - [Duplicated Fields for Faster Querying](/documents/indexing/duplicated-fields.md) - [Unique Indexes](/documents/indexing/unique.md) - [Foreign Keys](/documents/indexing/foreign-keys.md) - [GIN or GiST Indexes](/documents/indexing/gin-gist-indexes.md) - [Metadata Indexes](/documents/indexing/metadata-indexes.md) - [Ignore Indexes](/documents/indexing/ignore-indexes.md) ### Event Store - [Understanding Event Sourcing with Marten](/events/learning.md) - [Marten as Event Store](/events.md): Use Marten as an event store on PostgreSQL. Full event sourcing implementation with stream appending, projections, async daemon, subscriptions, and multi-tenancy. - [Event Store Quick Start](/events/quickstart.md) - [Event Store Schema Objects](/events/storage.md) - [Appending Events](/events/appending.md): Append events to streams in Marten's event store. Covers starting streams, appending to existing streams, Rich vs Quick append modes, and optimistic concurrency. - [Bulk Appending Events](/events/bulk-appending.md) - [Querying Event and Stream Data](/events/querying.md) - [Event Metadata](/events/metadata.md) - [Archiving Event Streams](/events/archiving.md) - [Natural Keys](/events/natural-keys.md) - [Dynamic Consistency Boundary (DCB)](/events/dcb.md) - [Optimizing for Performance and Scalability ](/events/optimizing.md) - [Binary Event Serialization ](/events/binary-serialization.md) - [Projections](/events/projections.md): Marten projections transform event streams into read models. Supports single-stream, multi-stream, inline, async, and custom projections with the async daemon. - [Event Subscriptions ](/events/subscriptions.md) - [Events Versioning](/events/versioning.md) - [Event Store Multi-Tenancy](/events/multitenancy.md) - [Stream Compacting ](/events/compacting.md) - [Removing Protected Information ](/events/protection.md) - [Marking Events as Skipped ](/events/skipping.md) - [Aggregates, Events, Repositories](/scenarios/aggregates-events-repositories.md) #### Projections Overview - [Aggregate Projections](/events/projections/aggregate-projections.md) - [Event Projections](/events/projections/event-projections.md) - [F# Projections](/events/projections/fsharp.md) - [Custom Projections](/events/projections/custom.md) - [Inline Projections](/events/projections/inline.md) - [Flat Table Projections](/events/projections/flat.md) - [Composite or Chained Projections ](/events/projections/composite.md) - [Async Projections Daemon](/events/projections/async-daemon.md) - [Testing Projections](/events/projections/testing.md) - [Rebuilding Projections](/events/projections/rebuilding.md) - [EF Core Projections](/events/projections/efcore.md) - [Projections and IoC Services](/events/projections/ioc.md) - [Using Ancillary Stores in Projections ](/events/projections/ancillary-stores.md) - [ProjectLatest — Include Pending Events ](/events/projections/project-latest.md) - [Async Daemon HealthChecks](/events/projections/healthchecks.md) ##### Aggregate Projections - [Aggregation with Conventional Methods](/events/projections/conventions.md) - [Aggregation with Explicit Code](/events/projections/explicit.md) - [Live Aggregation](/events/projections/live-aggregates.md) - [Single Stream Projections and Snapshots](/events/projections/single-stream-projections.md) - [Multi-Stream Projections](/events/projections/multi-stream-projections.md) - [Reading Aggregates](/events/projections/read-aggregates.md) - [Using Event Metadata](/events/projections/using-metadata.md) - [Side Effects ](/events/projections/side-effects.md) - [Enriching Events ](/events/projections/enrichment.md) ### Tutorials - [Marten Tutorial: Building a Freight & Delivery System](/tutorials.md) - [Part 1: Freight Shipping Use Case – Document-First Approach](/tutorials/getting-started.md) - [Modeling documents](/tutorials/modeling-documents.md) - [Part 2: Evolving to Event Sourcing – Capturing Shipment Changes](/tutorials/evolve-to-event-sourcing.md) - [Part 3: Building an Event-Sourced Aggregate](/tutorials/event-sourced-aggregate.md) - [Part 4: Projections – Building Read Models from Events](/tutorials/read-model-projections.md) - [Part 5: Multi-Stream Projections – Cross-Aggregate Views](/tutorials/cross-aggregate-views.md) - [Part 6: Integrating Marten with Wolverine](/tutorials/wolverine-integration.md) - [Part 7: Advanced Considerations – Optimistic Concurrency and Deployment](/tutorials/advanced-considerations.md) - [Conclusion](/tutorials/conclusion.md) ### Testing - [Integration testing](/testing/integration.md) ### DevOps - [DevOps with Marten: Setting Up a Dockerfile and Migrations](/devops/devops.md) ### Diagnostics - [Diagnostics and Instrumentation](/diagnostics.md) - [Open Telemetry and Metrics ](/otel.md) ### Schema - [Marten and the PostgreSQL Schema](/schema.md) - [How Documents are Stored](/schema/storage.md) - [Schema Migrations and Patches](/schema/migrations.md) - [Exporting the Schema Definition](/schema/exporting.md) - [Schema Feature Extensions](/schema/extensions.md) - [Cleaning up database](/schema/cleaning.md) ### Troubleshoot - [FAQ & Troubleshooting](/troubleshoot.md) ### Scenarios - [Aggregates, Events, Repositories](/scenarios/aggregates-events-repositories.md) - [Copy and transform stream](/scenarios/copy-and-transform-stream.md) - [Storing & reading back non-uniform JSON documents via dynamic](/scenarios/dynamic-data.md) - [Using sequences for unique and human-readable identifiers](/scenarios/using-sequence-for-unique-id.md) - [CQRS Command Handler Workflow for Capturing Events](/scenarios/command_handler_workflow.md) ### Community - [Tools and Libraries](/community/tools-and-libraries.md) ### Other - [Customizing Schema Generation](/schema/authorization.md) - [Event Store Configuration](/events/configuration.md) - [Explicit Aggregations](/events/projections/custom-aggregates.md) - [Migration Guide](/migration-guide.md) - [Projecting by Event Type](/events/projections/projection-by-event-type.md) - [Scenarios](/scenarios.md)