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
<PackageReference Include="RManuel.MySQL.EntityFrameworkCore.HiLo" Version="1.1.0" />
<PackageVersion Include="RManuel.MySQL.EntityFrameworkCore.HiLo" Version="1.1.0" />
<PackageReference Include="RManuel.MySQL.EntityFrameworkCore.HiLo" />
paket add RManuel.MySQL.EntityFrameworkCore.HiLo --version 1.1.0
#r "nuget: RManuel.MySQL.EntityFrameworkCore.HiLo, 1.1.0"
#:package RManuel.MySQL.EntityFrameworkCore.HiLo@1.1.0
#addin nuget:?package=RManuel.MySQL.EntityFrameworkCore.HiLo&version=1.1.0
#tool nuget:?package=RManuel.MySQL.EntityFrameworkCore.HiLo&version=1.1.0
MySQL.EntityFrameworkCore.HiLo
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 | 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 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. |
-
net8.0
- MySql.EntityFrameworkCore (>= 8.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.