2012-02-20 19 views

Respuesta

30

Al crear su modelo de entidad, debe asegurarse de incluir los procedimientos almacenados. A continuación, cree importaciones de función para ellos:

  1. Abra su modelo de entidad en Visual Studio
  2. El navegador de modelo debe abrir en el lado derecho de la pantalla
  3. En el explorador de modelos, es necesario seleccionar el almacenado procedimiento y haga clic en Agregar función de importación para crear la función para el procedimiento almacenado.
  4. un cuadro de diálogo se abrirá para seleccionar el procedimiento almacenado y volver tipo

Eso es todo. Ahora puedes usar eso en el código.

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Objects.ObjectParameter output = new System.Data.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
+0

gracias Dana ! –

+4

Resolví un patrón similar en mi código y noté que la propiedad de valor del parámetro de salida se llena después de acceder al conjunto de resultados de salida. –

+1

@RudolfDvoracek Sí, los parámetros de salida se llenan después de que se leen los conjuntos de datos resultantes. – Anderson

10

respuesta modificada para 6.x Entity Framework/VS 2015 - notar el cambio de espacio de nombres:

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Entity.Core.Objects.ObjectParameter output = new System.Data.Entity.Core.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
0

Aquí hay otra manera de hacerlo utilizando Entity Framework

YourDB db = new YourDB(); 
public double GetCategoryYearly(double Param1, double Param2, double Param3) 
{ 
    System.Data.Entity.Core.Objects.ObjectParameter OutputParam = new System.Data.Entity.Core.Objects.ObjectParameter("SPOutputParam", typeof(double)); 
    var objStoredProc = db.YourStoredProc(Param1, Param2, Param3, OutputParam).First(); 
    return Convert.ToDouble(OutputParam.Value); 
}