AuroraScienceHub.Framework.EntityFramework.NpgSql
9.0.4
Prefix Reserved
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 AuroraScienceHub.Framework.EntityFramework.NpgSql --version 9.0.4
NuGet\Install-Package AuroraScienceHub.Framework.EntityFramework.NpgSql -Version 9.0.4
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="AuroraScienceHub.Framework.EntityFramework.NpgSql" Version="9.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AuroraScienceHub.Framework.EntityFramework.NpgSql" Version="9.0.4" />
<PackageReference Include="AuroraScienceHub.Framework.EntityFramework.NpgSql" />
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 AuroraScienceHub.Framework.EntityFramework.NpgSql --version 9.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AuroraScienceHub.Framework.EntityFramework.NpgSql, 9.0.4"
#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 AuroraScienceHub.Framework.EntityFramework.NpgSql@9.0.4
#: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=AuroraScienceHub.Framework.EntityFramework.NpgSql&version=9.0.4
#tool nuget:?package=AuroraScienceHub.Framework.EntityFramework.NpgSql&version=9.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
AuroraScienceHub.Framework.EntityFramework.NpgSql
PostgreSQL-specific extensions for Entity Framework Core including DbContext factories and optimized configurations.
Overview
Provides PostgreSQL-specific implementations for Entity Framework Core, including design-time DbContext factories for migrations and PostGIS spatial support.
Key Features
- DbContext Factories - Design-time factories for EF migrations
- PostGIS Support - Spatial data types and operations
- PostgreSQL Conventions - Database naming and configuration
- Performance Optimizations - PostgreSQL-specific optimizations
Installation
dotnet add package AuroraScienceHub.Framework.EntityFramework.NpgSql
Usage
DbContext Factory
// 1. Define connection options
public class DatabaseOptions : IConnectionOptions
{
public static string OptionKey => "Database";
public string Host { get; set; } = "localhost";
public int Port { get; set; } = 5432;
public string Database { get; set; } = string.Empty;
public string Username { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string GetConnectionString()
{
return $"Host={Host};Port={Port};Database={Database};Username={Username};Password={Password}";
}
}
// 2. Create factory for migrations
public class ApplicationDbContextFactory
: PostgreSqlDbContextFactoryBase<ApplicationDbContext, DatabaseOptions>
{
protected override ApplicationDbContext CreateDbContext(
DbContextOptions<ApplicationDbContext> options)
{
return new ApplicationDbContext(options);
}
}
Service Registration
builder.Services.AddDbContext<ApplicationDbContext>((sp, options) =>
{
var configuration = sp.GetRequiredService<IConfiguration>();
var dbOptions = configuration.GetRequiredOptions<DatabaseOptions>();
options.UseNpgsql(
dbOptions.GetConnectionString(),
npgsqlOptions =>
{
npgsqlOptions.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName);
npgsqlOptions.EnableRetryOnFailure(maxRetryCount: 3);
});
});
PostgreSQL-Specific Features
public class ProductConfiguration : IEntityTypeConfiguration<Product>
{
public void Configure(EntityTypeBuilder<Product> builder)
{
// PostgreSQL array types
builder.Property(p => p.Tags)
.HasColumnType("text[]");
// JSONB
builder.Property(p => p.Metadata)
.HasColumnType("jsonb");
// Full-text search index
builder.HasIndex(p => p.Description)
.HasMethod("GIN")
.IsTsVectorExpressionIndex("english");
}
}
Spatial Data (PostGIS)
public class Location : IEntity<LocationId>
{
public LocationId Id { get; private set; }
public Point Coordinates { get; set; } = null!;
}
// Configure DbContext
options.UseNpgsql(connectionString, x => x.UseNetTopologySuite());
// Spatial queries
var nearbyLocations = await _context.Locations
.Where(l => l.Coordinates.Distance(point) <= radiusMeters)
.ToListAsync();
Running Migrations
# Add migration
dotnet ef migrations add InitialCreate --project src/MyApp.Infrastructure
# Update database
dotnet ef database update --project src/MyApp.Infrastructure
# Generate SQL script
dotnet ef migrations script --output migration.sql
Configuration Example
{
"Database": {
"Host": "localhost",
"Port": 5432,
"Database": "myapp",
"Username": "postgres",
"Password": "secret",
"MinPoolSize": 10,
"MaxPoolSize": 100
}
}
License
See LICENSE file in the repository root.
Related Packages
AuroraScienceHub.Framework.EntityFramework- Base EF Core functionalityAuroraScienceHub.Framework.Configuration- Configuration helpers
| 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
- App.Metrics.Abstractions (>= 4.3.0)
- AspNetCore.HealthChecks.NpgSql (>= 9.0.0)
- AspNetCore.HealthChecks.Sqlite (>= 9.0.0)
- AuroraScienceHub.Framework.Configuration (>= 9.0.4)
- AuroraScienceHub.Framework.Diagnostics (>= 9.0.4)
- AuroraScienceHub.Framework.EntityFramework (>= 9.0.4)
- EFCore.NamingConventions (>= 9.0.0)
- Microsoft.EntityFrameworkCore (>= 9.0.0)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
- Microsoft.Extensions.Caching.Abstractions (>= 9.0.2)
- Microsoft.Extensions.Caching.Memory (>= 9.0.2)
- Microsoft.Extensions.Configuration (>= 9.0.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.3)
- Microsoft.Extensions.Configuration.CommandLine (>= 9.0.3)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 9.0.3)
- Microsoft.Extensions.Configuration.FileExtensions (>= 9.0.3)
- Microsoft.Extensions.Configuration.Json (>= 9.0.3)
- Microsoft.Extensions.DependencyInjection (>= 9.0.3)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Logging (>= 9.0.3)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Options (>= 9.0.3)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.3)
- NetTopologySuite (>= 2.6.0)
- NetTopologySuite.IO.PostGis (>= 2.1.0)
- Npgsql (>= 9.0.2)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 9.0.1)
- Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite (>= 9.0.1)
- Npgsql.NetTopologySuite (>= 9.0.1)
- System.Text.Json (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.