SQL Overview
Vali-Flow.Sql traduce expresiones C# fuertemente tipadas y constructores fluidos en sentencias SQL parametrizadas. Está diseñado para integrarse con Dapper, ADO.NET o cualquier framework que acepte un string SQL más un diccionario de parámetros.
loading...Características principales:
- Traducción de árboles de expresión a cláusula WHERE via
ValiFlow<T>.ToSql(dialect) - Construcción de consultas SELECT completas via
SqlQueryBuilder<T> - Constructores para INSERT, UPDATE, DELETE, TRUNCATE y MERGE
- Cinco dialectos SQL integrados (SQL Server, PostgreSQL, MySQL, SQLite, Oracle)
- Todas las consultas son parametrizadas — sin interpolación de valores del usuario
- Funciones de ventana: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, FIRST_VALUE, LAST_VALUE y funciones de agregado OVER
- CTEs (regulares y recursivas), JOINs con subconsultas, UNION / EXCEPT / INTERSECT, bloqueo de filas
Instalación
dotnet add package Vali-Flow.Sql
Ejemplo rápido
var filter = new ValiFlow<User>()
.NotNull(x => x.Name)
.GreaterThan(x => x.Age, 18);
var sql = filter.ToSql(new SqlServerDialect());
// sql.Sql → "[Name] IS NOT NULL AND [Age] > @p0"
// sql.Parameters → { "p0": 18 }
// Dapper
var users = connection.Query<User>($"SELECT * FROM Users WHERE {sql.Sql}", sql.Parameters);
// ADO.NET
cmd.CommandText = $"SELECT * FROM Users WHERE {sql.Sql}";
sql.ApplyTo(cmd);