RManuel.MySQL.EntityFrameworkCore.HiLo 1.1.0

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

MySQL.EntityFrameworkCore.HiLo

NuGet Version Build Status License

MySQL.EntityFrameworkCore.HiLo es una extensión para Entity Framework Core que permite usar un generador de claves HiLo (High/Low pattern) emulado con una tabla en MySQL.

Este enfoque mejora el rendimiento al generar IDs de manera cliente-side sin necesidad de consultar el servidor por cada inserción, y al mismo tiempo garantiza unicidad a nivel de base de datos.


Instalación

dotnet add RManuel.MySQL.EntityFrameworkCore.HiLo

Configuración

En tu DbContext, configura tus entidades para que usen HiLo:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // Debe llamarse primero a modelBuilder.UseMySqlHiLo()
    modelBuilder.UseMySqlHiLo(new HiLoOptions
    {
        BlockSize = 10,
        TableName = "HiLo"
    });

    // Configura Order con HiLo
    modelBuilder.Entity<Order>(b =>
    {
        b.UseMySqlHiLoId(blockSize: 20);
    });

    // Configura Customer con HiLo
    modelBuilder.Entity<Customer>(b =>
    {
        b.UseMySqlHiLoId(blockSize: 50);
    });
}

La tabla HiLo será creada automáticamente en la primera migración.


Caso de uso

Imagina que tienes un sistema de pedidos y clientes:

public class Order
{
    public long Id { get; set; }
    public string Name { get; set; } = string.Empty;
}

public class Customer
{
    public long Id { get; set; }
    public string Email { get; set; } = string.Empty;
}

Si usas Identity en MySQL, cada inserción requiere un roundtrip al servidor. Con RManuel.MySQL.EntityFrameworkCore.HiLo:

  • El cliente obtiene un rango de IDs desde la tabla HiLo.
  • EF Core asigna IDs localmente hasta que se agota el bloque.
  • Al agotarse, se solicita un nuevo rango con una transacción segura.

Esto es ideal en escenarios de alta concurrencia o cuando se usan réplicas de MySQL en Docker/Kubernetes, ya que evita colisiones de identidad.


Migraciones

Genera la migración inicial:

dotnet ef migrations add InitialCreate
dotnet ef database update

Esto crea la tabla HiLo automáticamente junto con tus entidades.


Licencia

MIT © 2025

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 was computed.  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.

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
1.1.0 208 9/8/2025
1.0.0 186 9/8/2025