Как выполнить запрос с использованием хранимой процедуры, имеющей входные и выходные параметры (платформа Entity Framework)
В этом разделе приведены два примера выполнения параметризированной хранимой процедуры при помощи платформы Entity Framework . В первом примере имеется один входной параметр и возвращается коллекция объектов сущностей. Во втором примере имеется один входной параметр и один выходной параметр, и значение возвращается в выходном параметре. Примеры в этом разделе основаны на модели School. Чтобы выполнить эти примеры, добавьте School, модель к проекту и настройте проект для использования Entity Framework . Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).
Пример
В следующем коде выполняется хранимая процедура GetStudentGrades, где параметр StudentId является обязательным. Чтобы выполнить этот пример кода, импортируйте хранимую процедуру GetStudentGrades
и укажите сущности CourseGrade
в качестве возвращаемого типа. Дополнительные сведения об импорте хранимых процедур см. в разделе 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);
}
}
В следующем коде выполняется хранимая процедура GetDepartmentName
, а в выходном параметре возвращается имя отдела. Выполнение данного примера кода.
Добавьте в базу данных School следующую процедуру.
CREATE PROCEDURE [dbo].[GetDepartmentName] @ID int, @Name nvarchar(50) OUTPUT AS SELECT @Name = Name FROM Department WHERE DepartmentID = @ID
Обновите модель School из базы данных, добавив хранимую процедуру
GetDepartmentName
. Дополнительные сведения см. в разделе How to: Update an .edmx File when the Database Changes.Импортируйте хранимую процедуру
GetDepartmentName
, выбрав в качестве возвращаемого типа значение Нет. Дополнительные сведения см. в разделе 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);
}