¿Admite Dapper los parámetros con valores de tabla de SQL 2008?

.net dapper

Pregunta

¿Alguien sabe si es posible pasar datos de parámetros con valores de tabla a un procedimiento almacenado con Dapper?

Respuesta aceptada

Ahora hay (n Dapper 1.26 y superior) soporte directo para parámetros con valores de tabla horneados en dapper. En el caso de los procedimientos almacenados, dado que el tipo de datos está integrado en la API sproc, todo lo que necesita hacer es proporcionar una DataTable :

var data = connection.Query<SomeType>(..., new {
    id=123, name="abc", values = someTable
}, ...);

Para el texto de comando directo tiene otras dos opciones:

  • utilice un método auxiliar para indicarle el tipo de datos personalizado:

    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable.AsTableValuedParameter("mytype")
    }, ...);
    
  • dígale a la tabla de datos qué tipo de datos personalizados usar:

    someTable.SetTypeName("mytype");
    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable
    }, ...);        
    

Cualquiera de estos debería funcionar bien.


Respuesta experta

hoy no lo es. De hecho, investigamos los parámetros de tabla-valed para nuestra descarada implementación "in" ( where col in @values ), pero no estábamos muy impresionados por el rendimiento. Sin embargo, en el contexto de un SPROC tiene sentido.

Su mejor opción es registrar esto como un problema en el sitio del proyecto para que podamos rastrearlo / priorizarlo. Sin embargo, parece que algo será factible, probablemente similar a las opciones de DbString o DynamicParameters.

¿Pero hoy? No.



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é