Uso de: en lugar de @ para parámetros de consulta

dapper sql-server

Pregunta

Tengo una aplicación bastante grande usando dapper y Oracle. Ahora, quiero admitir SQL Server.

El problema es que todas mis consultas están escritas con : y no con @ , por lo que SQL Server se queja:

Sintaxis incorrecta cerca ':'

¿Es posible decir apuesto que debe sustituir : con @ o tengo que hacer eso en mi propio código?

Respuesta aceptada

Descubrí que esto es realmente imposible directamente con Dapper:

Parámetro Oracle de Dapper.net

Usando Dapper con Oracle

Perdón por los duplicados.


Respuesta experta

Esto no está incorporado, pero podrías proporcionarlo de manera relativamente simple escribiendo un método de extensión personalizado y haciendo los ajustes que necesites:

public static IEnumerable<T> MyMagicQuery<T>(this IDbConnection conn,
    string query, object args = ...)
{
    query = RunSomeRegexReplace(query);
    return conn.Query<T>(query, args, ...);
}

Sin embargo, aunque la expresión regular para esto no es particularmente exigente, el mayor problema es que T / SQL y PL / SQL son dos variantes distintas de SQL. Muchas funciones no funcionarán en absoluto si se proporciona una traducción directa simple. Otras características pueden funcionar, pero requieren una sintaxis diferente. Un tercer grupo de características puede funcionar sintácticamente pero proporcionar resultados diferentes (sí, realmente) o tener características de rendimiento muy diferentes, a menos que se vuelva a escribir para aprovechar las preferencias específicas de RDBMS.

Fundamentalmente, cambiar entre RDBMS es mucho más que simplemente cambiar @ a :



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é