Laxo.Database.Migrations
1.0.1
See the version list below for details.
dotnet add package Laxo.Database.Migrations --version 1.0.1
NuGet\Install-Package Laxo.Database.Migrations -Version 1.0.1
<PackageReference Include="Laxo.Database.Migrations" Version="1.0.1" />
paket add Laxo.Database.Migrations --version 1.0.1
#r "nuget: Laxo.Database.Migrations, 1.0.1"
// Install Laxo.Database.Migrations as a Cake Addin #addin nuget:?package=Laxo.Database.Migrations&version=1.0.1 // Install Laxo.Database.Migrations as a Cake Tool #tool nuget:?package=Laxo.Database.Migrations&version=1.0.1
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
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 direcho 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:
> MigrateService migrateService = new(new MigrationGeneratorSQLServer(), connection);
MySQL:
> MigrateService migrateService = new(new MigrationGeneratorPostgreSQL(), connection);
PostgreSQL:
> MigrateService migrateService = new(new MigrationGeneratorPostgreSQL(), connection);
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 que 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
Hecho con algo de amor y sueño 😁
Product | Versions 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 was computed. 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- No dependencies.
-
net6.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.
- Correcciones en el README.md
- Factorización en el código