FxMap.EntityFrameworkCore 4.1.1

dotnet add package FxMap.EntityFrameworkCore --version 4.1.1
                    
NuGet\Install-Package FxMap.EntityFrameworkCore -Version 4.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FxMap.EntityFrameworkCore" Version="4.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FxMap.EntityFrameworkCore" Version="4.1.1" />
                    
Directory.Packages.props
<PackageReference Include="FxMap.EntityFrameworkCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FxMap.EntityFrameworkCore --version 4.1.1
                    
#r "nuget: FxMap.EntityFrameworkCore, 4.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FxMap.EntityFrameworkCore@4.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FxMap.EntityFrameworkCore&version=4.1.1
                    
Install as a Cake Addin
#tool nuget:?package=FxMap.EntityFrameworkCore&version=4.1.1
                    
Install as a Cake Tool

<p align="center"> <img src="https://raw.githubusercontent.com/quyvu01/FxMap/main/FxMap.png" alt="FxMap" width="96" /> </p>

<h1 align="center">FxMap.EntityFrameworkCore</h1>

<p align="center"> Entity Framework Core data provider for FxMap — answers FxMap requests straight from your <code>DbContext</code>. </p>

<p align="center"> <a href="https://www.nuget.org/packages/FxMap.EntityFrameworkCore"><img alt="NuGet" src="https://img.shields.io/nuget/v/FxMap.EntityFrameworkCore.svg" /></a> <a href="https://www.nuget.org/packages/FxMap.EntityFrameworkCore"><img alt="Downloads" src="https://img.shields.io/nuget/dt/FxMap.EntityFrameworkCore.svg" /></a> <a href="https://github.com/quyvu01/FxMap/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" /></a> </p>

<p align="center"> <a href="https://github.com/quyvu01/FxMap"><b>FxMap</b></a> · <a href="https://fxmapper.net"><b>Documentation</b></a> · <a href="https://github.com/quyvu01/TestFxMap-Demo"><b>Demo project</b></a> </p>


The owning service of an entity registers it with EntityConfigureOf<T> and lists its DbContexts. FxMap then turns incoming requests (ids plus expressions) into one EF Core query per distributed key and returns only the requested values.

Installation

dotnet add package FxMap.EntityFrameworkCore

All FxMap.* packages must use the same version.

Usage

public sealed class UserDistributedKey : IDistributedKey;

// 1. Describe the entity: its id, default property and distributed key
public class UserConfig : EntityConfigureOf<User>
{
    protected override void Configure()
    {
        Id(x => x.Id);
        DefaultProperty(x => x.Name);
        UseDistributedKey<UserDistributedKey>();
    }
}

// 2. Register FxMap and the DbContext(s) that hold your entities
builder.Services.AddFxMap(cfg =>
    {
        cfg.AddEntitiesFromAssemblyContaining<SomeEntityAssemblyMarker>();
        cfg.AddProfilesFromAssemblyContaining<SomeProfileAssemblyMarker>();
    })
    .AddEntityFrameworkCore(options =>
        options.AddDbContexts(typeof(AppDbContext), typeof(ReportingDbContext)));

AddEntitiesFromAssemblyContaining (or AddEntityConfig<T>) must run before AddEntityFrameworkCore.

How requests are executed

  • One query per request. All ids and all expressions of a request are answered by a single AsNoTracking query with a projection, using the expression language (navigation, filters, aggregations, projections, indexers).
  • Several DbContexts are supported. FxMap routes each entity to the DbContext that exposes it as a DbSet.
  • Each query runs in its own DI scope, with its own DbContext, so requests can run in parallel safely. It does not see uncommitted data held by the caller's DbContext or transaction.
  • Ids are parsed to the entity's id type: string, Guid, int, long, short, byte, decimal, double, float and their unsigned / nullable forms, or any strongly typed id with an IStronglyTypeConverter<TId> registered. Ids that cannot be parsed are ignored.
  • Ids are answered the way they were sent. "ABCD…", {…} or N-format Guids, "007" for 7 or " 7 " are found and matched back to the object that sent them (2.3.5+).
  • Aggregates over empty collections: :count and :sum return 0; :min, :max and :avg return null (2.3.5+).
  • ExposedName(x => x.Email, "UserEmail") renames a property in expressions; the original name no longer resolves.
Package Description Documentation
Core
FxMap FxMap core: profiles, entity configs, the mapper and the expression language README
Data providers
FxMap.EntityFrameworkCore Answers requests from an Entity Framework Core DbContext This document
FxMap.MongoDb Answers requests from MongoDB collections README
Integrations
FxMap.HotChocolate Fills GraphQL response types through HotChocolate README
Transports
FxMap.Grpc gRPC transport README
FxMap.Nats NATS transport README
FxMap.RabbitMq RabbitMQ transport README
FxMap.Kafka Apache Kafka transport README
FxMap.Azure.ServiceBus Azure Service Bus transport (Standard / Premium tiers) README
FxMap.Aws.Sqs Amazon SQS transport README
Tooling
FxMap.Analyzers Roslyn analyzer that validates expression strings at compile time README
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.1.1 38 10/6/2026
4.1.0 50 10/5/2026
4.0.0 84 10/5/2026
3.0.0 150 10/2/2026
2.3.5 57 10/2/2026
2.3.4 48 10/2/2026
2.3.3 52 10/1/2026
2.3.2 73 10/1/2026
2.3.1 122 8/21/2026
2.3.0 147 6/16/2026
2.2.2 128 6/3/2026
2.2.1 127 5/31/2026
2.2.0 508 5/26/2026
2.1.1 123 5/26/2026
2.1.0 228 5/7/2026
2.0.1 119 4/5/2026
2.0.0 124 4/5/2026
1.0.3 135 3/15/2026
1.0.2 125 3/7/2026
1.0.1 119 3/6/2026
Loading failed