Saltar al contenido

¿Es posible llamar a un procedimiento almacenado usando LINQ en LINQPad?

Solución:

Al menos en mi copia de LINQPad, los procedimientos almacenados aparecen en la vista de árbol de la base de datos y se pueden invocar directamente.

Aquí hay una captura de pantalla:

Captura de pantalla

Resumiendo algunas de las otras respuestas y agregando un poco de información adicional:

Conéctese a su fuente de datos usando el Por defecto (LINQ to SQL) conductor. Asegúrese de que la casilla de verificación Incluir funciones y procedimientos almacenados está chequeado.

Los procedimientos y funciones almacenados ahora están disponibles como funciones .NET (por ejemplo, C #) en consultas que utilizan la conexión. Los parámetros requeridos por la función reflejan los parámetros requeridos por el procedimiento almacenado o la función de base de datos.

El valor devuelto por la función es un ReturnDataSet que es un tipo LINQPad derivado de DataSet. Desafortunadamente, no es tan fácil realizar consultas LINQ en conjuntos de datos, pero LINQPad proporciona el método de extensión AsDynamic() que tomará la primera tabla del conjunto de datos devuelto (normalmente solo hay una tabla) y convertirá las filas a IEnumerable<Object> donde los objetos de la colección son dinámicos, lo que le permite acceder a los valores de la columna como propiedades. Por ejemplo, si su procedimiento almacenado devuelve columnas Id y Name puedes usar LINQ:

SomeStoredProc().AsDynamic().Where(row => row.Id == 123 && row.Name == "Foo")

Desafortunadamente, no tendrá intellisense porque los objetos de fila son dinámicos.

Mi respuesta (Con la ayuda de Daniel, gracias).

Daniel me ayudó a darme cuenta de que se pueden llamar a procedimientos almacenados si apuntas a una base de datos con la lista desplegable en la ventana de consulta; luego, en la ventana de consulta, llame al proceso almacenado por su nombre y agregue paréntesis al final para llamarlo como una función.

La principal diferencia entre la versión actual (estoy usando 4.26.2 a partir de esta fecha) es que LINQ en VS devuelve tipos de datos personalizados para que coincidan con los objetos de datos devueltos por el procedimiento almacenado y LINQPad devuelve un DataSet. Por lo tanto, al seleccionar “Declaraciones de C #”, puede ejecutar esto correctamente como una consulta:

DataSet fooResults = foo_stored_proc(myParam);

¡Gracias por la ayuda de todos!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *