with stored mvc framework executesqlcommand ejecutar entity-framework stored-procedures parameters

stored - ¿Cómo pasar parámetros al procedimiento almacenado desde Entity Framework?



entity framework stored procedure return select (2)

La primera pregunta es: ¿para qué versión del marco de la entidad? .NET 3.5? .NET 4? Las cosas han cambiado significativamente (¡y mejorado!) En .NET 4.

Y en segundo lugar: ¿qué quieres hacer?

  • recuperar filas de la base de datos

  • ejecutar un proceso almacenado sin valor de retorno

  • mapa INSERT / UPDATE / DELETE operaciones en una entidad a un proceso almacenado ??

Estos son tres escenarios bastante diferentes, por lo que necesitamos saber a lo que nos dirigimos.

Además: solo busque con Google (o Bing); hay muchas publicaciones de blog y tutoriales que le muestran cómo hacerlo: una lista rápida:

y literalmente miles más ......

Actualización: bien, entonces quiere recuperar datos de la base de datos. En ese caso, tus pasos son:

  • vaya a su modelo EF (archivo * .edmx) en el diseñador
  • haga clic derecho y seleccione Update Model from Database
  • elige el procedimiento almacenado que quieras usar y sigue el asistente

Esto crea una entrada para el procedimiento almacenado en su modelo de almacenamiento físico . Siguiente:

  • vaya al Model Browser (consulte el menú contextual anterior, justo debajo del Update Model from Database ), navegue hasta el Modelo de almacenamiento y encuentre su procedimiento
  • haga clic derecho en ese procedimiento
  • Seleccione Add Function Import que importa la "función" (procedimiento almacenado) del modelo de almacenamiento físico al modelo conceptual (básicamente, la clase de contexto de la entidad).

Aquí tienes cuatro opciones:

  • su proceso almacenado podría no devolver nada (como en mi ejemplo) - entonces es solo un método en su clase de contexto al que puede llamar que hace algo
  • su proceso almacenado podría devolver una colección de escalares, por ejemplo, una lista de valores INT o algo así - elija el valor apropiado en el menú desplegable
  • su proceso almacenado podría devolver entidades de su modelo, por ejemplo, entidades de Customer completas; en ese caso, seleccione la última opción y elija la entidad a la que desea asignar (su proceso almacenado debe devolver todas las columnas para esa entidad, en este caso)

O:

  • el proceso almacenado devuelve algo, pero no solo escalares (no solo INT), ni una entidad, en ese caso, puede elegir la tercera opción y definir un nuevo tipo complejo (una clase) que contendrá sus resultados devueltos del procedimiento almacenado. .

Sea lo que sea que haga, básicamente EF creará un método en su clase de contexto de objetos al que puede llamar. Cualquier parámetro que su proceso almacenado requiera serán parámetros de ese método para que pueda pasar fácilmente, por ejemplo, cadenas, ints, etc.

Quiero saber cómo enviar parámetros al procedimiento almacenado desde el marco de la entidad? Gracias por adelantado.


Otro escenario necesita llamar a un procedimiento almacenado con múltiples parámetros de SALIDA. A continuación se muestra una muestra completa.

public void MyStoredProc(int inputValue, out decimal outputValue1, out decimal outputValue2) { var parameters = new[] { new SqlParameter("@0", inputValue), new SqlParameter("@1", SqlDbType.Decimal) { Direction = ParameterDirection.Output }, new SqlParameter("@2", SqlDbType.Decimal) { Direction = ParameterDirection.Output } }; context.ExecuteStoreCommand("exec MyStoredProc @InParamName=@0, @OutParamName1=@1 output, @OutParamName2=@2 output", parameters); outputValue1 = (decimal)parameters[1].Value; outputValue2 = (decimal)parameters[2].Value; }

Tenga en cuenta los tipos utilizados (decimal). Si se necesita otro tipo, recuerde no solo cambiarlo en la lista de argumentos del método sino también en SqlDbType.XXX .