您可以在 Entity Framework 5 中使用Table-Valued Function。我认为link 将解决您的问题:
要在实体框架中使用表值函数,您需要执行以下步骤:
1. 在解决方案资源管理器中右键单击项目名称,指向添加,然后单击新建
项目。
2. 从左侧菜单中选择数据,然后在
模板窗格。
3.输入TVFModel.edmx作为文件名,然后点击添加。
4. 在选择模型内容对话框中,选择从数据库生成,然后
点击下一步。
5. 点击新建连接
在服务器名称文本框中输入(localdb)\v11.0
输入 School 作为数据库名称
点击确定。
6. 在“选择您的数据库对象”对话框中的“表”节点下,选择
Person、StudentGrade 和 Course 表。
7. 选择位于存储过程下的GetStudentGradesForCourse 函数
和函数节点注意,从 Visual Studio 2012 开始,实体设计器
允许您批量导入存储过程和函数。
8.点击完成。
9. 提供用于编辑模型的设计界面的实体设计器是
显示。您在选择您的数据库对象
中选择的所有对象
对话框被添加到模型中。
10.默认情况下,每个导入的存储过程或函数的结果形状都会
自动成为实体模型中的新复杂类型。但我们想映射
GetStudentGradesForCourse 函数的结果到 StudentGrade 实体:
右键单击设计图面并选择模型浏览器
在模型浏览器中,选择函数导入,然后双击
GetStudentGradesForCourse 函数
在 Edit Function Import 对话框中,选择 Entities 并选择 StudentGrade
您可以使用以下代码在应用程序中使用Table-Value Function 来检索数据:
using (var context = new SchoolEntities())
{
var CourseID = 4022;
var Grade = 3.5M;
// Return all the best students in the Microeconomics class.
var students = from s in context.GetStudentGradesForCourse(CourseID)
where s.Grade >= Grade
select new
{
s.Person,
s.Course.Title
};
foreach (var result in students)
{
Console.WriteLine(
"Couse: {0}, Student: {1} {2}",
result.Title,
result.Person.FirstName,
result.Person.LastName);
}
}