DMS.SqlScriptGenerator
1.0.0
dotnet add package DMS.SqlScriptGenerator --version 1.0.0
NuGet\Install-Package DMS.SqlScriptGenerator -Version 1.0.0
<PackageReference Include="DMS.SqlScriptGenerator" Version="1.0.0" />
<PackageVersion Include="DMS.SqlScriptGenerator" Version="1.0.0" />
<PackageReference Include="DMS.SqlScriptGenerator" />
paket add DMS.SqlScriptGenerator --version 1.0.0
#r "nuget: DMS.SqlScriptGenerator, 1.0.0"
#addin nuget:?package=DMS.SqlScriptGenerator&version=1.0.0
#tool nuget:?package=DMS.SqlScriptGenerator&version=1.0.0
DMS.SqlScriptGenerator
Autor: Fredy Fuentes
Fecha de Creación: 2025-03-19
📜 Descripción
Biblioteca para generar scripts SQL de manera programática en .NET. Incluye métodos para construir consultas, manejar transacciones, trabajar con parámetros y convertir objetos DTOs a SQL de forma segura y eficiente.
📝 Características Principales
- Generación de scripts para transacciones SQL (BEGIN, COMMIT, ROLLBACK).
- Soporte para parámetros nombrados y mapeo automático de DTOs.
- Validación y conversión segura de tipos de datos (fechas, números, textos).
- Integración con
DMS.Common.Extensions
para manejo de atributos personalizados.
📖 Ejemplos de Uso
📖 Iniciar una Transacción
string sql = SqlScriptBuilder.BeginTransaction();
Console.WriteLine(sql);
// Output:
// Begin Try
// BEGIN TRANSACTION
📖 Confirmar una Transacción con retorno de ID
string sql = SqlScriptBuilder.CommitTransaction(true);
Console.WriteLine(sql);
// Output:
// Commit Transaction
// End Try
// Begin Catch
// SELECT [Error]=LEFT(ERROR_MESSAGE(),1000)
// ROLLBACK TRANSACTION
// Return
// End Catch
// SELECT [Id]=@id
📖 Generar SQL con Parámetros
string sql = SqlScriptBuilder.GenerateSql("Exec GetUsers", 123, DataTypes.Number, "John Doe", DataTypes.Text);
Console.WriteLine(sql);
// Output: Exec GetUsers 123,'John Doe'
📖 Generar SQL con un DTO
var userDto = new UserDto { Id = 1, Name = "Jane Doe", IsActive = true };
string sql = SqlScriptBuilder.GenerateSql("UpdateUser", userDto);
Console.WriteLine(sql);
// Output: UpdateUser @Id=1,@Name='Jane Doe',@IsActive=1
🚀 Instalación
Puedes instalar el paquete desde NuGet con:
dotnet add package DMS.SqlScriptGenerator
📦 Dependencias
dotnet add package DMS.Common.Extensions
🛠 Compatibilidad
- .NET 7.0+
- .NET 8.0+
- .NET 9.0+
⚠️ Prevención de Inyección SQL
- Nunca concatenes valores directamente. Usa siempre
GenerateSql
oGenerateSql<T>
. - Usa parámetros nombrados para valores dinámicos.
- Aplica atributos
[DisplayName]
en DTOs para definir nombres de columnas seguros.
// ❌¡Nunca hagas esto!
string sql = $"SELECT * FROM Users WHERE Name = '{userInput}'";
// ✅Usa GenerateSql con parámetros sanitizados
string sql = SqlScriptBuilder.GenerateSql("GetUserByName", userInput, DataTypes.Text);
// ❌¡Nunca hagas esto!
string sql = $"SELECT * FROM Users WHERE Name = '{userInput}'";
// ✅Usa GenerateSql con parámetros sanitizados
string sql = SqlScriptBuilder.GenerateSql(
"SELECT * FROM Users WHERE Name = @name AND Id = @id",
"@name", DataTypes.Text, userName, // Parámetro 1: @name
"@id", DataTypes.Number, userId // Parámetro 2: @id
);
📄 Documentación Completa
Clase | Descripción |
---|---|
SqlScriptBuilder |
Genera scripts SQL para transacciones, consultas y DTOs. |
DataTypes |
Enumeración de tipos de datos. |
ValueConverter |
Convierte valores a formatos compatibles con SQL (fechas, números, textos). |
ValueValidator |
Valida tipos de datos antes de generar SQL. |
PropertyInfoExtension |
Métodos de extensión para PropertyInfo . |
📄 Licencia
Este proyecto se encuentra bajo la licencia Apache2-0.
📌 Cómo Contribuir
Si deseas contribuir, revisa el archivo CONTRIBUTING.md
para más detalles.
--
📜 Changelog
Para ver los cambios en cada versión, consulta el archivo CHANGELOG.md
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net9.0
- DMS.Common.Extensions (>= 1.0.0)
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.0.0 | 128 | 20 days ago |