DMS.SqlScriptGenerator
2.0.0
dotnet add package DMS.SqlScriptGenerator --version 2.0.0
NuGet\Install-Package DMS.SqlScriptGenerator -Version 2.0.0
<PackageReference Include="DMS.SqlScriptGenerator" Version="2.0.0" />
<PackageVersion Include="DMS.SqlScriptGenerator" Version="2.0.0" />
<PackageReference Include="DMS.SqlScriptGenerator" />
paket add DMS.SqlScriptGenerator --version 2.0.0
#r "nuget: DMS.SqlScriptGenerator, 2.0.0"
#:package DMS.SqlScriptGenerator@2.0.0
#addin nuget:?package=DMS.SqlScriptGenerator&version=2.0.0
#tool nuget:?package=DMS.SqlScriptGenerator&version=2.0.0
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étodosGenerateSecureSql
. 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
yCOMMIT 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 | 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. 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. |
-
net9.0
- DMS.Common.Extensions (>= 2.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.