¿Cómo puedo gestionar mi script de consulta SQL en el proyecto asp.net mvc?

asp.net-mvc c# config dapper sql-scripts

Pregunta

Ahora estoy usando Dapper para procesar datos

Código como:

using(var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnectString"])
{
     var sql = string.Format(
         @"SELECT [Column1]
             FROM [MyTable]
            WHERE [Column3] > {0}
              AND [Column4] < {1}"
         , myValue1
         , myValue2
     );
     var result = connection.Query<long>(sql).ToList();
}

Mi proyecto escribirá muchos script sql como este arriba.

Quiero escribir scripts en los archivos (tal vez QueryAccount.config, QueryOrder.config, (formato xml) ... u otros mejores ...)

Entonces puedo cargar el script desde los archivos ...


Lo que quiero es escribir mis scripts en archivos, luego escribo la misma clase en el archivo. (Por ejemplo, escribo todos los scripts de productos de consulta en Product.config y todos los scripts de órdenes de búsqueda en Order.config). Luego uso como

var cmd = MyCommandManager.GetScript("QueryProduct");
cmd.SetParam("@ProductId", 123);
cmd.SetParam("@InvoicingDate", DateTime.Now(-7))
...

Script en archivo como:

SELECT [ProductName]
FROM [Product]
WHERE [ProductId] = @ProductId
  AND [InvoicingDate] = @InvoicingDate

Respuesta popular

Ignora a los downvoters. SQL siempre debe estar en su propio archivo. Estos archivos deben tener la extensión .sql, no .config. Como tal, serán editados en el editor VS SQL, una verdadera comodidad. Usted quiere un archivo por consulta, creo. No se gana nada al agrupar diferentes consultas en el mismo archivo. Yo recomendaría poner estos archivos al lado de los archivos .cs que los consumen, agrupando los archivos que abren juntos, y los archivos que es probable que desee eliminar juntos un día.

Una vez creado, haga clic con el botón secundario en .sql en el explorador de soluciones, Propiedades -> Acción de compilación -> Recurso incrustado. Luego, en su método MyCommandManager.GetScript (), use GetManifestResourceStream () para acceder al texto de la consulta. En comparación con los procedimientos almacenados, esto tiene la gran ventaja de que sus consultas se compilan con el código de llamada, por lo que nunca tendrá que preocuparse por sincronizar la versión de sus procedimientos almacenados y su aplicación.

Si todo esto parece mucho trabajo, lo es. Es por eso que nadie lo hace, pero deberían :-) Capturar QueryFirst , y se hará por usted, y mucho más. Descargo de responsabilidad: escribí QueryFirst.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué