NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #2370 most downloaded on NuGet
Fluent property-to-column mapping for Dapper, including explicit maps, naming conventions, profiles, diagnostics, and supported immutable object materialization.
Last release 7 days ago
01 Oct 2026
Ships unpredictably
gaps range from 3 weeks to 6.0 years
Some releases are documented
notes for 12 of 28 stable releases
5 versions withdrawn
withdrawn after publishing
127 years old
33 releases · first in 1900
chore(sonar): exclude eng tooling from analysis by @rodri-oliveira-dev in #210
Full Changelog: v3.4.0...v3.5.0
One column per quarter.
GeneratedParameters for parameterized strict-generated queries, including provider-matrix and Native AOT smoke coverage.InsertMapped*/UpdateMapped* operations that execute per-property write converters while preserving persistence exclusions and Dapper type-handler precedence.splitOn boundaries, per-segment profiles, async execution, null-child semantics and isolated-runtime APIs.ConstructUsing(...) factory strategies for one to four mapped values, with configuration validation and deterministic generated/strict boundaries.DFM016 for duplicate explicit construction strategies.Nullable=annotations; optional query inputs, metadata and multi-mapping null-child delegates reflect actual behavior without changing CLR signatures.FluentMapConfigurationException instances instead of leaking provider-dependent FormatException or InvalidCastException exceptions.Dapper.FluentMap 3.4.0 Dapper.FluentMap 3.4.0 expands the maintained 3.x line with first-class multi-mapping, asynchronous multiple-result-set APIs, s
Dapper.FluentMap 3.4.0 expands the maintained 3.x line with first-class multi-mapping, asynchronous multiple-result-set APIs, stricter generated materialization, broader database-provider certification, and a hardened release supply chain.
This release keeps the core packages on netstandard2.0 while substantially increasing the behavior validated by the project's automated compatibility matrix.
FluentMap now provides first-class two-type multi-mapping through:
QueryMapped<TFirst, TSecond, TReturn>(...)The API supports:
splitOn boundaries;
per-segment mapping profiles;
immutable objects;
nested mappings;
value objects;
property converters;
Dapper TypeHandler interoperability;
isolated FluentMapRuntime configuration.
LEFT JOIN scenarios are also handled so an absent child segment can be represented correctly instead of materializing an invalid object.
The mapped multiple-result API now includes asynchronous counterparts:
QueryMultipleMappedAsync(...)
ReadMappedAsync<T>(...)
ReadMappedSingleAsync<T>(...)
ReadMappedSingleOrDefaultAsync<T>(...)MappedGridReader preserves ordered result-set consumption and now rejects concurrent reads deterministically, while supporting cancellation and predictable disposal behavior.
Applications that want to avoid runtime materialization fallback can now opt into a generated-only path using:
UseStrictGeneratedMaterialization()
QueryGeneratedMapped*()Unsupported shapes fail deterministically instead of silently falling back to reflection-based runtime materialization.
Generated materializers also support safe permutations of distinct result columns, improving generated-path coverage for projections whose column order differs from the registered shape.
A dedicated Native AOT smoke test validates the strict generated SQLite path on win-x64.
Full Native AOT compatibility is not claimed. Reflection-based assembly scanning, arbitrary runtime fallback, and other dynamic scenarios remain outside the supported Native AOT boundary.
Provider compatibility is now continuously validated against real database instances in CI.
Provider | Validated version -- | -- SQLite | Microsoft.Data.Sqlite 10.0.12 SQL Server | SQL Server 2022 CU23 / Microsoft.Data.SqlClient 7.1.0 PostgreSQL | 18.6 / Npgsql 10.0.3 MySQL | 8.4.11 / MySqlConnector 2.6.2 MariaDB | 11.8.9 / MySqlConnector 2.6.2The SQL Server, PostgreSQL, MySQL, and MariaDB lanes are mandatory and fail closed when the database service or test configuration is unavailable.
These tests exercise mapped reads, generated/runtime materialization, multiple result sets, streaming, and relevant Dommel persistence scenarios.
The supported Dapper range is now consistently defined and tested as:
Dapper [2.1.79, 3.0.0)The CI matrix validates both:
minimum supported: 2.1.79
latest stable: 2.1.89
This aligns package metadata, documentation, and the versions exercised by CI.
The 3.4.0 release contains:
Dapper.FluentMap
Dapper.FluentMap.Dommel
FluentMap.DependencyInjection
FluentMap.Analyzers
FluentMap.Generators
The FluentMap.* names are NuGet PackageIds only. Assemblies, namespaces, and public APIs remain under Dapper.FluentMap.*.
All packages continue to target netstandard2.0.
The release pipeline now provides stronger artifact verification and provenance, including:
CodeQL analysis;
dependency review gates;
deterministic package inventory;
SHA-256 checksums;
SPDX 2.3 SBOM generation;
GitHub artifact attestations;
release artifact manifest;
consumer smoke tests;
validation of existing NuGet artifacts before publication;
governed publication to NuGet.org and GitHub Packages.
Release and recovery workflows have also been aligned with the repository's main branch.
The historical static APIs remain available, including:
FluentMapper.Initialize(...)
EntityMap<TEntity>
Map(...).ToColumn(...)
Ignore()For applications that need isolated FluentMap configuration, prefer FluentMapConfigurationBuilder and FluentMapRuntime.
The following remain intentionally outside the current compatibility claims:
Dapper versions outside [2.1.79, 3.0.0);
Dommel versions outside [3.5.3, 4.0.0);
full Native AOT compatibility;
per-runtime isolation of Dommel's global configuration;
three-or-more-type multi-mapping;
graph aggregation;
CRUD generation.
Existing applications using the historical FluentMap APIs can continue using them.
When upgrading, keep all FluentMap packages on the same release version and review the newer APIs only where they provide value to your application:
use FluentMapRuntime when configuration isolation is required;
use QueryMapped<TFirst,TSecond,TReturn> for FluentMap-controlled two-type multi-mapping;
use QueryMultipleMappedAsync for asynchronous multiple-result processing;
use strict generated materialization when deterministic generated-only behavior is required.
For applications consuming the auxiliary DI, analyzer, or generator packages, use the current PackageIds:
FluentMap.DependencyInjection
FluentMap.Analyzers
FluentMap.GeneratorsThanks to everyone who has used, tested, reported issues, reviewed changes, or contributed to the continued maintenance of Dapper.FluentMap.
Full changelog:
v3.0.3...v3.4.0
eng/package-catalog.json as the authoritative distribution package inventory..sdd/etapa-12/.main.2.1.79; the latest-stable lane is 2.1.89.QueryMapped<TFirst,TSecond,TReturn> multi-mapping with splitOn, per-segment profile overloads and an isolated FluentMapRuntime equivalent.QueryMultipleMappedAsync and async MappedGridReader.ReadMappedAsync* APIs for ordered multiple-result-set materialization.UseStrictGeneratedMaterialization() and QueryGeneratedMapped*, with deterministic diagnostics and a Native AOT CI smoke.splitOn in the first column is rejected as an empty first segment and duplicate split columns remain ambiguous across the full row shape.MappedGridReader now fail deterministically while sequential and cancellation/disposal behavior is preserved.MySqlConnector 2.6.2.FluentMap.DependencyInjection, FluentMap.Analyzers and FluentMap.Generators. Project names, assemblies, namespaces and public APIs remain Dapper.FluentMap.*.No intentional public API breaking changes are introduced in 3.0.3.
This release focuses on stabilizing the FluentMap 3.x package family, improving Dommel mapping behavior, modernizing package distribution, and making the release pipeline significantly more reliable.
Three supporting packages now use FluentMap-focused NuGet package IDs:
Dapper.FluentMap.DependencyInjection → FluentMap.DependencyInjectionDapper.FluentMap.Analyzers → FluentMap.AnalyzersDapper.FluentMap.Generators → FluentMap.GeneratorsThe core package identities remain unchanged:
Dapper.FluentMapDapper.FluentMap.DommelOnly the NuGet package identities changed. Existing assembly names, namespaces, project identities, and public APIs are preserved.
For new installations:
dotnet add package Dapper.FluentMap --version 3.0.3
dotnet add package Dapper.FluentMap.Dommel --version 3.0.3
dotnet add package FluentMap.DependencyInjection --version 3.0.3
dotnet add package FluentMap.Analyzers --version 3.0.3
dotnet add package FluentMap.Generators --version 3.0.3ResolveProperties is called but before enumeration.A broad internal refactoring reduced complexity across:
These changes are internal and are intended to preserve existing public API and runtime behavior.
.slnx solution format while retaining the traditional .sln for compatibility.The release infrastructure received substantial hardening in this version.
NuGet.org publication now treats package acceptance and package indexing as separate operations. All missing packages are submitted first, without blocking the package set while NuGet.org performs asynchronous validation and indexing.
After submission, the pipeline performs a bounded convergence phase and validates published primary package contents against the original release artifacts.
Release recovery is also resumable and idempotent, with safeguards for partially published releases.
Additional release safeguards include:
No intentional public API breaking changes are introduced in 3.0.3.
Consumers of the Dependency Injection, Analyzer, or Generator packages should update their PackageReference to the new package IDs listed above.
Thanks to everyone using and contributing to Dapper-FluentMap. This release lays a stronger foundation for the FluentMap 3.x line, both for consumers and for future maintenance.
Full Changelog: v2.0.0...v3.0.3
Stable 3.0.3 packages have been published for the maintained fork line. The historical release-candidate notes below are retained as history, not as the current release status.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Dapper.FluentMap Update to Dapper 2.0.35 Dapper.FluentMap.Dommel Update to Dapper.FluentMap 2.0 Update to Dommel 2.0
Nothing published for this version
Nothing published for this version
Add conventions to the Dommel column name resolver
Add conventions to the Dommel column name resolver
Update Dapper to 1.60.1 - fixes #83
Use ReflectedType on full .NET and .NET Standard 2.0 (.NET Core 2.0 and .NET Core 2.1) for mapping properties from derived entities.
Update to .NET Standard library 1.6.1
Fix mapping value objects - #58
v1.5.3 Compare # Choose a tag to compare
v1.5.3
Compare
Nothing published for this version
Update to .NET Core RTM
Update to .NET Core RTM
Migrated to .NET Standard 1.3
Migrated to .NET Standard 1.3
Version using Dapper v1.50.0-beta8
Version using Dapper v1.50.0-beta8
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →