Cómo: Ejecutar un consulta utilizando un procedimiento almacenado con parámetros IN y OUT (Entity Framework)
En este tema se proporcionan dos ejemplos de cómo ejecutar un procedimiento almacenado parametrizado con Entity Framework . En el primer ejemplo se toma un parámetro de entrada y se devuelve una colección de objetos entidad. En el segundo ejemplo se toma un parámetro de entrada y un parámetro de salida y se devuelve un valor en el parámetro de salida. Los ejemplos de este tema se basan en el modelo School. Para seguir estos ejemplos, agregue el Modelo School al proyecto y configúrelo para usar Entity Framework . Para obtener más información, vea Cómo usar el Asistente para Entity Data Model (Entity Framework).
Ejemplo
El código siguiente ejecuta un procedimiento almacenado GetStudentGrades donde StudentId es un parámetro necesario. Para ejecutar este ejemplo de código, importe el procedimiento almacenado GetStudentGrades
y especifique las entidades CourseGrade
como un tipo de valor devuelto. Para obtener información sobre cómo importar un procedimiento almacenado, vea How to: Import Stored Procedures.
' Specify the Student ID.
Dim studentId As Integer = 2
Using context As New SchoolEntities()
For Each grade As StudentGrade In context.GetStudentGrades(studentId)
Console.WriteLine("StudentID: " & studentId)
Console.WriteLine("Student grade: " & grade.Grade)
Next
End Using
// Specify the Student ID.
int studentId = 2;
using (SchoolEntities context =
new SchoolEntities())
{
foreach (StudentGrade grade in
context.GetStudentGrades(studentId))
{
Console.WriteLine("StudentID: " + studentId);
Console.WriteLine("Student grade: " + grade.Grade);
}
}
El siguiente código ejecuta el procedimiento almacenado GetDepartmentName
, que devuelve el nombre del departamento en el parámetro de salida. Para ejecutar este ejemplo de código:
Agregue el siguiente procedimiento a la base de datos School:
CREATE PROCEDURE [dbo].[GetDepartmentName] @ID int, @Name nvarchar(50) OUTPUT AS SELECT @Name = Name FROM Department WHERE DepartmentID = @ID
Actualice el modelo School desde la base de datos agregando el procedimiento almacenado
GetDepartmentName
. Para obtener más información, vea How to: Update an .edmx File when the Database Changes.Importe el procedimiento almacenado
GetDepartmentName
y especifique Ninguno como tipo de valor devuelto de este procedimiento almacenado. Para obtener más información, vea How to: Import a Stored Procedure.
Using context As New SchoolEntities()
' name is an output parameter.
Dim name As New ObjectParameter("Name", GetType(String))
context.GetDepartmentName(1, name)
Console.WriteLine(name.Value)
End Using
using (SchoolEntities context =
new SchoolEntities())
{
// name is an output parameter.
ObjectParameter name = new ObjectParameter("Name", typeof(String));
context.GetDepartmentName(1, name);
Console.WriteLine(name.Value);
}