DMS.SqlScriptGenerator 2.0.0

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

DMS.SqlScriptGenerator

Paquete NuGet: DMS.SqlScriptGenerator Autor: Fredy Fuentes Versión Actual: 2.0.0

📜 Descripción

DMS.SqlScriptGenerator es una librería para .NET que facilita la creación de consultas a procedimientos almacenados de forma segura. Su función principal es transformar objetos (DTOs, diccionarios) en un formato de consulta parametrizable, eliminando el riesgo de inyección de SQL de raíz.

La librería genera un "string empaquetado" que separa el comando SQL de los datos del usuario. Este formato está diseñado para ser consumido por librerías de acceso a datos (como DMS.Connection.DbAdo) que saben cómo interpretar y ejecutar estas consultas de forma segura.

🚨 Nota de Migración desde v1.x: La versión 2.0.0 es una reescritura enfocada en la seguridad. Los métodos GenerateSql ahora están obsoletos y deben ser reemplazados por los nuevos métodos GenerateSecureSql. Esta actualización es crítica para la seguridad de tu aplicación.

📝 Características Principales

  • Prevención de Inyección de SQL: El nuevo diseño de "string empaquetado" garantiza que los datos del usuario nunca se ejecuten como código SQL.
  • Mapeo Automático desde DTOs: Convierte objetos (POCOs) a consultas de procedimientos almacenados respetando atributos como [Column] y [NotMapped].
  • API Clara para la Migración: Los métodos inseguros están marcados como [Obsolete] para guiar a los desarrolladores hacia la nueva API segura.
  • Soporte para Transacciones: Incluye helpers para BEGIN TRANSACTION y COMMIT TRANSACTION.

📖 Ejemplo de Uso (El Flujo Seguro)

El objetivo es generar un script que pueda ser ejecutado de forma segura por una librería de conexión.

using DMS.SqlScriptGenerator.Generators;
using DMS.Connection.DbAdo.Connect; // Ejemplo de librería de conexión

// 1. Define tu DTO
public class UserDto
{
    public int Id { get; set; }
    [Column("FullName")] // Usa el nombre de columna "FullName"
    public string Name { get; set; }
}

// 2. Crea una instancia de tu DTO
var user = new UserDto { Id = 123, Name = "Ana O'Connor" };

// 3. Usa el generador para crear el script seguro
string secureScript = SqlScriptBuilder.GenerateSecureSql("sp_UpdateUser", user);

// El resultado de 'secureScript' es un string "empaquetado":
// "EXEC sp_UpdateUser @Id,@FullName||@Id=123(System.Int32)|@FullName=Ana O'Connor(System.String)"

// 4. Pasa el script a tu librería de conexión, que sabe cómo desempaquetarlo y ejecutarlo de forma segura.
// (Ejemplo usando la librería DMS.Connection.DbAdo refactorizada)
// await adoConnect.ExecuteAsync(secureScript);

🚀 Instalación

dotnet add package DMS.SqlScriptGenerator --version 2.0.0

📦 Dependencias

  • DMS.Common.Extensions (v2.0.0+)

🛠 Compatibilidad

  • .NET 9.0+

📄 Documentación de Clases Principales

Clase Descripción
SqlScriptBuilder Clase principal. Contiene los métodos GenerateSecureSql para crear scripts parametrizables.
PropertyInfoExtension Contiene el helper GetDisplayName para leer atributos [Column].

📄 Licencia

Este proyecto se encuentra bajo la licencia Apache-2.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 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.  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
2.0.0 28 9/9/2025
1.0.3 155 8/29/2025
1.0.2 200 6/13/2025
1.0.1 158 5/5/2025
1.0.0 155 3/27/2025