Laxo.Database.Migrations 2.0.3

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

Laxo database migrations

Es una biblioteca de clases con el fin de poder ejecutar archivos .sql para las migraciones de una o más bases de datos sin importar el proveedor de esta.

Índice de contenido

  1. Instalación
  2. Inicio rápido
  3. Proveedores de bases de datos
  4. Nota
  5. Advertencia
  6. Contribuyendo
  7. Licencia

Instalación

Para la instalación abra la consola del administrador de paquetes en Visual Studio y escriba:

PM> Install-Package Laxo.Database.Migrations

O haga clic derecho en el proyecto → Administrar paquetes NuGet... → En línea → busque Laxo.Database.Migrations en la parte superior; también puedes usar el dotnet CLI con el siguiente comando.

dotnet add package Laxo.Database.Migrations

Inicio rápido

Debes indicar el proveedor de la base de datos mediante una clase y la ruta de la carpeta de los archivos a migrar.

using System.Data.SqlClient;
using Laxo.Database.Migrations;

string erroresSQLServer;
using (SqlConnection connection = new("Cadena de conexión"))
{
    MigrateService migrateService = new(new MigrationGeneratorSQLServer(), connection);
    erroresSQLServer = await migrateService.ExecuteAsync("Ruta de la carpeta con los archivos .sql");
}
Console.WriteLine(erroresSQLServer);

Al ejecutarse las migraciones en caso exista algún error, se retornará dicho error en la variable erroresSQLServer

Proveedores de bases de datos

Laxo.Database.Migrations pretende ser lo más independiente posible de la base de datos. Sin embargo, hay lugares donde se necesita que se le indique con que proveedor de base de datos va a interactuar.

Proveedores de bases de datos integrados

Los motores de base de datos admitidos actualmente son:

  • MSSQL:

    Ejemplo de cadena de conexión:

    "Server=localhost,1433;Database=laxo_database;User Id=sa;Password=YourStrong!Passw0rd;TrustServerCertificate=true;"
    
        string erroresSQLServer;
        using (SqlConnection connection = new("Cadena de conexión"))
        {
           MigrateService migrateService = new(new MigrationGeneratorSQLServer(), connection);
           erroresSQLServer = await migrateService.ExecuteAsync("Ruta a la carpeta con los archivos .sql");
        }
        Console.WriteLine(erroresSQLServer);
    
  • MySQL:

    Ejemplo de cadena de conexión:

        "Server=localhost;Port=3306;Database=laxo_database;User=root;Password=password;"
    
       string erroresMySQLServer;
       using (MySqlConnection connection = new("Cadena de conexión"))
       {
          MigrateService migrateService = new(new MigrationGeneratorMySQL(), connection);
          erroresMySQLServer = await migrateService.ExecuteAsync("Ruta a la carpeta con los archivos .sql");
       }
       Console.WriteLine(erroresMySQLServer);
    
  • PostgreSQL:

    Ejemplo de cadena de conexión:

        "Server=localhost;Port=5432;Database=laxo_database;User Id=postgres;Password=password;"
    
       string erroresPostgreSQL;
       using (NpgsqlConnection connection = new("Cadena de conexión"))
       {
          MigrateService migrateService = new(new MigrationGeneratorPostgreSQL(), connection);
          erroresPostgreSQL = await migrateService.ExecuteAsync("Ruta a la carpeta con los archivos .sql");
       }
       Console.WriteLine(erroresPostgreSQL);
    
  • SQLite:

    Ejemplo de cadena de conexión:

        "Data Source=laxo_database.db;"
    
        using SqliteConnection connection = new("Cadena de conexión");
        MigrateService migrateService = new(new MigrationGeneratorSQLite(), connection);
        string erroresSQLite = await migrateService.ExecuteAsync("Ruta a la carpeta con los archivos .sql");
        Console.WriteLine(erroresSQLite);
    

Nota

Laxo.Database.Migrations crea una tabla en la base de datos de nombre "__MigrationsHistory" e inserta los nombres de los archivos que se han ejecutado de manera correcta, con el uso de esta tabla puede saber qué archivos están pendientes de ejecutar.

Advertencia

Si el script a migrar tiene más de una instrucción a ejecutar, evite usar la palabra reservada "GO" para separarlos, como lo veremos en el siguiente ejemplo:

ALTER TABLE Tabla1
ADD Campo123 int
GO

ALTER TABLE Table2
ADD Campo321 int
GO

El ejemplo anterior no funcionará, para corregir esto debe de borrar todas las palabras "GO".

Contribuyendo

Los "pull requests" son bienvenidos. Para cambios importantes, abra primero un "discuss" para poder saber lo que le gustaría cambiar.

Licencia

MIT


Hecho con algo de amor y sueño 😁

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

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
2.0.3 111 1/14/2025
2.0.2 94 1/14/2025
2.0.1 100 1/14/2025
2.0.0 89 1/14/2025
1.0.2 169 3/16/2024
1.0.1 209 5/25/2023
1.0.0 250 1/31/2023

- Esta versión introduce cambios que pueden ser incompatibles con 1.x.x
- Uso de .NET 8.0
- Correcciones en código
- Cambios en el README.md
- Uso de SQLite
- Versión Release del paquete Nuget
- Documentación para el intellisense
- Parámetro para indicar cuál es la base de datos por defecto para cada proveedor