PgHintPlan.EntityFrameworkCore
1.0.7
dotnet add package PgHintPlan.EntityFrameworkCore --version 1.0.7
NuGet\Install-Package PgHintPlan.EntityFrameworkCore -Version 1.0.7
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="PgHintPlan.EntityFrameworkCore" Version="1.0.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PgHintPlan.EntityFrameworkCore" Version="1.0.7" />
<PackageReference Include="PgHintPlan.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 PgHintPlan.EntityFrameworkCore --version 1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PgHintPlan.EntityFrameworkCore, 1.0.7"
#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 PgHintPlan.EntityFrameworkCore@1.0.7
#: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=PgHintPlan.EntityFrameworkCore&version=1.0.7
#tool nuget:?package=PgHintPlan.EntityFrameworkCore&version=1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PgHintPlan
PgHintPlan
Run
dotnet add package PgHintPlan
Enable the extension
// create the data source
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connString);
await using var dataSource = dataSourceBuilder.Build();
// enable extension using the data source
await dataSource.EnablePgHintPlanAsync();
// alternatively, you can use the connection
var conn = dataSource.OpenConnection();
await conn.EnablePgHintPlanAsync();
PgHintPlan.EntityFrameworkCore
Run
dotnet add package PgHintPlan.EntityFrameworkCore
Import the library
using PgHintPlan.EntityFrameworkCore;
Enable the extension
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.UsePgHintPlan();
}
Configure the connection
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UsePgHintPlan();
optionsBuilder.UseNpgsql();
}
Disable Hash Join
var items = await ctx.Items
.EnableHashJoin(false)
.ToListAsync();
Force nested loop for the joins on the tables
var data = await ctx.Products
.Join(ctx.Items,
(product) => product.Id,
(item) => item.ProductId,
(product, item) => new
{
ProductId = product.Id,
Id = item.Id
})
.NestLoop(ctx.Items.EntityType, ctx.Products.EntityType)
.ToListAsync();
Force index scan on the table
var index = ctx.Items.EntityType
.GetIndexes()
.Where(i => i.Name == "test_index")
.Single();
var items = await ctx.Items
.IndexScan(ctx.Items.EntityType, index)
.ToListAsync();
You can stack as many commands as you want
var items = await ctx.Items
.EnableHashAgg()
.EnableHashJoin(false)
.EnableIndexOnlyScan()
.ToListAsync();
Supported Commands:
Join methods
HashJoinNoHashJoinNestLoopNoNestLoop
Scan methods
SeqScanTidScanIndexScanIndexOnlyScanBitmapScanIndexScanRegexpIndexOnlyScanRegexpBitmapScanRegexpNoSeqScanNoTidScanNoIndexScanNoIndexOnlyScanNoBitmapScan
Join order
Leading
Behavior control on Join
MemoizeNoMemoize
Row number correction
SetRows
Parallel query configuration
Parallel
GUC
EnableHashAggEnableHashJoinEnableIndexOnlyScanEnableIndexScanEnableMaterialEnableNestLoopEnablePartitionPruningEnablePartitionWiseAggregateEnablePartitionWiseJoinEnableSeqScanEnableSort
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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.
-
net9.0
- PgHintPlan (>= 1.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.