如何:使用存储过程以及 In 和 Out 参数执行查询(实体框架)
本主题提供两个演示如何使用实体框架 执行参数化存储过程的示例。 第一个示例采用一个输入参数并返回实体对象集合。 第二个示例采用一个输入参数和一个输出参数,并在输出参数中返回一个值。 本主题中的示例基于 School 模型。 若要执行这些示例,请将 School 模型添加到您的项目并将项目配置为使用实体框架 . 有关更多信息,请参见如何:使用实体数据模型向导(实体框架)。
示例
下面的代码执行 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
通过添加
GetDepartmentName
存储过程从数据库更新 School 模型。 有关更多信息,请参见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);
}