NuvTools.Data.EntityFrameworkCore 10.0.0

dotnet add package NuvTools.Data.EntityFrameworkCore --version 10.0.0
                    
NuGet\Install-Package NuvTools.Data.EntityFrameworkCore -Version 10.0.0
                    
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="NuvTools.Data.EntityFrameworkCore" Version="10.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NuvTools.Data.EntityFrameworkCore" Version="10.0.0" />
                    
Directory.Packages.props
<PackageReference Include="NuvTools.Data.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 NuvTools.Data.EntityFrameworkCore --version 10.0.0
                    
#r "nuget: NuvTools.Data.EntityFrameworkCore, 10.0.0"
                    
#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 NuvTools.Data.EntityFrameworkCore@10.0.0
                    
#: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=NuvTools.Data.EntityFrameworkCore&version=10.0.0
                    
Install as a Cake Addin
#tool nuget:?package=NuvTools.Data.EntityFrameworkCore&version=10.0.0
                    
Install as a Cake Tool

Nuv Tools Data Libraries

NuGet License

Nuv Tools Data Libraries are a set of .NET libraries designed to simplify and standardize data access and manipulation. They provide abstractions and helpers for common data operations, as well as seamless integration with Entity Framework Core for SQL Server and PostgreSQL.

🎯 Key Features

  • Multi-Framework Support: .NET 8, .NET 9, and .NET 10
  • ORM-Agnostic Core: Base paging and sorting utilities work with any data source
  • EF Core Integration: First-class support for Entity Framework Core 10.0
  • Result Pattern: All database operations return IResult or IResult<T> for consistent error handling
  • Async-First: All EF Core operations are async with CancellationToken support
  • Bulk Operations: Efficient bulk add, update, and remove operations
  • Well-Documented: Comprehensive XML documentation for IntelliSense support

📦 Libraries Overview

NuvTools.Data

NuGet

Core library with generic helpers for data manipulation:

  • Paging: Abstracts paging logic for both IQueryable and IEnumerable collections
  • Sorting: Extension methods for sorting with ascending/descending direction
  • Filtering: Paging filters with optional sorting capabilities
  • No dependencies: Works with any data source or ORM
dotnet add package NuvTools.Data

NuvTools.Data.EntityFrameworkCore

NuGet

Extensions for Entity Framework Core:

  • DbContextBase: Base class with CRUD operations using Result pattern
  • Transaction Management: Built-in transaction support with rollback/commit
  • Execution Strategies: Connection resiliency with automatic retry
  • Bulk Operations: SyncFromListAsync, AddOrUpdateFromListAsync, AddOrRemoveFromListAsync
  • Async Paging: PagingWrapAsync for efficient database paging
dotnet add package NuvTools.Data.EntityFrameworkCore

NuvTools.Data.EntityFrameworkCore.SqlServer

NuGet

Specialized helpers for SQL Server with EF Core:

  • Simple Registration: AddDatabase and AddDatabaseByConnectionName extension methods
  • Configuration Integration: Load connection strings from appsettings.json
  • SQL Server Options: Configure SQL Server-specific options via SqlServerDbContextOptionsBuilder
dotnet add package NuvTools.Data.EntityFrameworkCore.SqlServer

NuvTools.Data.EntityFrameworkCore.PostgreSQL

NuGet

Specialized helpers for PostgreSQL with EF Core:

  • Simple Registration: AddDatabase and AddDatabaseByConnectionName extension methods
  • Snake Case Convention: UseSnakeCaseNamingConvention for PostgreSQL naming standards
  • Npgsql Options: Configure PostgreSQL-specific options via NpgsqlDbContextOptionsBuilder
dotnet add package NuvTools.Data.EntityFrameworkCore.PostgreSQL

🚀 Quick Start

Basic Paging (NuvTools.Data)

using NuvTools.Data.Paging;

// In-memory paging
var items = new List<Product> { /* ... */ };
var pagedResult = items.PagingWrap(pageNumber: 1, pageSize: 20);

Console.WriteLine($"Page {pagedResult.PageNumber} of {Math.Ceiling(pagedResult.Total / 20.0)}");
foreach (var item in pagedResult.List)
{
    Console.WriteLine(item.Name);
}

Sorting (NuvTools.Data)

using NuvTools.Data.Sorting;
using NuvTools.Data.Sorting.Enumerations;

var sortedProducts = products
    .Sort(p => p.Category, SortDirection.ASC)
    .ThenSort(p => p.Price, SortDirection.DESC);

SQL Server Registration (NuvTools.Data.EntityFrameworkCore.SqlServer)

using NuvTools.Data.EntityFrameworkCore.SqlServer.Extensions;

// In Program.cs or Startup.cs
builder.Services.AddDatabaseByConnectionName<MyDbContext>("DefaultConnection");

// Or with connection string directly
builder.Services.AddDatabase<MyDbContext>(connectionString);

// With SQL Server-specific options
builder.Services.AddDatabaseByConnectionName<MyDbContext>(
    "DefaultConnection",
    sqlServerOptions => sqlServerOptions.EnableRetryOnFailure()
);

PostgreSQL with Snake Case (NuvTools.Data.EntityFrameworkCore.PostgreSQL)

using NuvTools.Data.EntityFrameworkCore.PostgreSQL.Extensions;

// Register DbContext
builder.Services.AddDatabaseByConnectionName<MyDbContext>("PostgresConnection");

// In your DbContext
public class MyDbContext : DbContextBase
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Apply snake_case naming convention for PostgreSQL
        modelBuilder.UseSnakeCaseNamingConvention();
        base.OnModelCreating(modelBuilder);
    }
}

Using DbContextBase

using NuvTools.Data.EntityFrameworkCore.Context;

public class MyDbContext : DbContextBase
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }

    public DbSet<Product> Products { get; set; }
}

// In your service
public class ProductService
{
    private readonly MyDbContext _context;

    public async Task<IResult<int>> CreateProductAsync(Product product)
    {
        // AddAndSaveAsync returns IResult<TKey>
        return await _context.AddAndSaveAsync<Product, int>(product);
    }

    public async Task<IResult> UpdateProductAsync(Product product, int id)
    {
        // UpdateAndSaveAsync returns IResult
        return await _context.UpdateAndSaveAsync(product, id);
    }

    public async Task<IResult> DeleteProductAsync(int id)
    {
        // RemoveAndSaveAsync returns IResult
        return await _context.RemoveAndSaveAsync<Product>(id);
    }
}

Async Paging with EF Core

using NuvTools.Data.EntityFrameworkCore.Paging;

public async Task<PagingWithEnumerableList<Product>> GetProductsAsync(int pageNumber, int pageSize)
{
    var query = _context.Products.Where(p => p.IsActive);

    // PagingWrapAsync materializes the data
    var pagedResult = await query.PagingWrapWithEnumerableListAsync(pageNumber, pageSize);

    return pagedResult;
}

Bulk Operations

// Sync from list: Add new, update existing, remove missing
var result = await _context.SyncFromListAsync(
    updatedProducts,
    p => p.Id,
    p => p.IsActive // Optional filter
);

// Add or update only (no removal)
await _context.AddOrUpdateFromListAsync(products, p => p.Id);

// Add or remove only (no updates)
await _context.AddOrRemoveFromListAsync(products, p => p.Id);

📋 Requirements

  • .NET SDK: 8.0, 9.0, or 10.0
  • Entity Framework Core: 10.0.0 (for EF Core libraries)
  • Database Providers:
    • SQL Server: Microsoft.EntityFrameworkCore.SqlServer 10.0.0
    • PostgreSQL: Npgsql.EntityFrameworkCore.PostgreSQL 10.0.0

🔧 Development

Building the Solution

dotnet build NuvTools.Data.slnx

Running Tests

# Run all tests
dotnet test

# Run specific test project
dotnet test tests/NuvTools.Data.Test/NuvTools.Data.Test.csproj

Creating NuGet Packages

dotnet build NuvTools.Data.slnx -c Release

Packages are automatically generated in bin/Release folders when building in Release configuration.

📝 Version History

Version 10.0.0

  • Added .NET 10 support
  • Updated to Entity Framework Core 10.0.0
  • Updated all Microsoft packages to version 10.0.0
  • Comprehensive XML documentation added to all public APIs
  • Migrated solution to .slnx format

📄 License

This project is licensed under the terms specified in the LICENSE file.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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 (2)

Showing the top 2 NuGet packages that depend on NuvTools.Data.EntityFrameworkCore:

Package Downloads
NuvTools.AspNetCore.EntityFrameworkCore

EntityFramework Core helper library to use with ASP.NET Aplications.

NuvTools.Security.Identity.EntityFrameworkCore

Contains Entity Framework Core helpers to be used with ASP.NET Identity modules.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0 133 12/6/2025
9.5.0 190 10/25/2025
9.3.3 589 7/15/2025
9.3.2 887 5/22/2025
9.3.1 213 4/13/2025
9.2.2 289 4/10/2025
9.2.1 230 3/31/2025
9.2.0 571 3/25/2025
9.1.0 223 3/13/2025
9.0.9 190 2/5/2025
9.0.8 167 1/2/2025
9.0.7 178 12/31/2024
9.0.6 149 12/29/2024
9.0.5 129 12/28/2024
9.0.4 172 12/26/2024
9.0.3 199 11/24/2024
9.0.2 162 11/22/2024
9.0.1 139 11/21/2024
9.0.0 177 11/13/2024
8.1.3 158 9/30/2024
8.1.2 183 9/27/2024
8.1.1 177 9/27/2024
8.1.0 233 9/9/2024
8.0.3 442 3/5/2024
8.0.2 275 2/14/2024
8.0.0 220 1/28/2024
7.1.0 411 9/10/2023
7.0.1 271 8/27/2023
7.0.0 428 2/27/2023