Shardis.Query.EntityFrameworkCore
0.1.0-prerelease0086
This is a prerelease version of Shardis.Query.EntityFrameworkCore.
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Shardis.Query.EntityFrameworkCore --version 0.1.0-prerelease0086
NuGet\Install-Package Shardis.Query.EntityFrameworkCore -Version 0.1.0-prerelease0086
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="Shardis.Query.EntityFrameworkCore" Version="0.1.0-prerelease0086" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Shardis.Query.EntityFrameworkCore" Version="0.1.0-prerelease0086" />
<PackageReference Include="Shardis.Query.EntityFrameworkCore" />
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 Shardis.Query.EntityFrameworkCore --version 0.1.0-prerelease0086
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Shardis.Query.EntityFrameworkCore, 0.1.0-prerelease0086"
#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 Shardis.Query.EntityFrameworkCore@0.1.0-prerelease0086
#: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=Shardis.Query.EntityFrameworkCore&version=0.1.0-prerelease0086&prerelease
#tool nuget:?package=Shardis.Query.EntityFrameworkCore&version=0.1.0-prerelease0086&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Shardis.Query.EntityFrameworkCore
Entity Framework Core query executor for Shardis (Where/Select pushdown, unordered streaming).
Install
dotnet add package Shardis.Query.EntityFrameworkCore --version 0.1.*
When to use
- Your shard-local persistence is EF Core and you want query pushdown and streaming.
- You need a tested executor that integrates with
DbContext
per shard.
What’s included
EntityFrameworkCoreShardQueryExecutor
— concrete executor that translates queries into EF Core operations.EntityFrameworkCoreShardFactory<TContext>
/PooledEntityFrameworkCoreShardFactory<TContext>
for per-shard context creation.- Wiring examples for registering
DbContext
instances per shard.
Quick start
// Build a shard factory (pure creation only)
var dbFactory = new EntityFrameworkCoreShardFactory<MyDbContext>(sid =>
new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite($"Data Source=shard-{sid.Value}.db")
.Options);
// (Optional) seed outside the factory
foreach (var sid in new[]{ new ShardId("0"), new ShardId("1") })
{
await using var ctx = await dbFactory.CreateAsync(sid);
// seed if empty
}
// Adapter to non-generic DbContext for executor
IShardFactory<DbContext> adapter = new DelegatingShardFactory<DbContext>((sid, ct) => new ValueTask<DbContext>(dbFactory.Create(sid)));
var exec = new EntityFrameworkCoreShardQueryExecutor(
shardCount: 2,
contextFactory: adapter,
merge: (streams, ct) => UnorderedMerge.Merge(streams, ct));
var query = ShardQuery.For<Person>(exec)
.Where(p => p.Age >= 30)
.Select(p => p.Name);
var names = await query.ToListAsync();
Integration notes
- Works with
Shardis.Query
core abstractions; register per-shardDbContext
factories in DI. - Recommended DI approach using
Shardis.DependencyInjection
:
var services = new ServiceCollection()
.AddShards<MyDbContext>(2, shard => new MyDbContext(BuildOptionsFor(shard)));
await using var provider = services.BuildServiceProvider();
var perShardFactory = provider.GetRequiredService<IShardFactory<MyDbContext>>();
IShardFactory<DbContext> adapter = new DelegatingShardFactory<DbContext>((sid, ct) => perShardFactory.CreateAsync(sid, ct));
var exec = new EntityFrameworkCoreShardQueryExecutor(2, adapter, (s, ct) => UnorderedMerge.Merge(s, ct));
Samples & tests
- Samples: samples
Configuration / Options
- PageSize: control the EF Core query page size for paged streaming (provider-specific).
- Shard factory: supply an
IShardFactory<DbContext>
(e.g.EntityFrameworkCoreShardFactory<TContext>
+ adapter) for pure creation; seed separately.
Capabilities & limits
- ✅ Pushes where/select operations to EF Core where supported.
- ⚠️ Ordered streaming can add latency and requires a stable key selector across shards.
- 🧩 Requires EF Core provider matching your database version.
Versioning & compatibility
- SemVer; see CHANGELOG: CHANGELOG
Contributing
- PRs welcome. See CONTRIBUTING
License
- MIT — see LICENSE
Links
Product | Versions 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 was computed. 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.
-
net8.0
- Microsoft.EntityFrameworkCore (>= 8.0.8)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.8)
- Shardis.Query (>= 0.1.0-prerelease0086)
-
net9.0
- Microsoft.EntityFrameworkCore (>= 8.0.8)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.8)
- Shardis.Query (>= 0.1.0-prerelease0086)
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 |
---|---|---|
0.2.2 | 59 | 9/11/2025 |
0.2.2-prerelease0001 | 62 | 9/11/2025 |
0.2.1 | 71 | 9/10/2025 |
0.2.1-prerelease0001 | 70 | 9/9/2025 |
0.2.0 | 79 | 9/8/2025 |
0.1.0-prerelease0086 | 90 | 9/7/2025 |
0.1.0-prerelease0085 | 93 | 9/7/2025 |
Initial release. Full notes: https://github.com/veggerby/shardis/blob/main/CHANGELOG.md#010---2025-08-25