如何将存储过程的结果读入其复杂类型

时间:2012-02-02 18:38:04

标签: c# sql entity-framework

我已经创建了我的存储过程,我使用实体模型创建了复杂类型。现在假设我已成功建立与数据库的连接 - 现在我已准备好运行存储过程并将行存储在List<ComplexType>中。我该如何以最好,最有效的方式做到这一点?我知道我可以遍历SQLDataReader的列和行,但有点像我会忽略实体框架的重点。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以将存储过程添加为函数导入,然后直接在程序集中调用它:

Using (var context = new NorthwindEntities())
{
               Var query = context.GetEmployeeNames(); // we import the stored procedure as a function GetEmployeeNames().
               //…
}

如果在存储过程中使用OUTPUT参数,则需要添加ObjectParameters以获取返回值。例如,

Using(var context = new NorthwindEntities())
{
               ObjectParameter firstname = new ObjectParameter(“firstname”, typeof(String));
               ObjectParameter lastname  = new ObjectParameter(“lastname”, typeof(String));
               Var query = context.GetEmployeeByID(123, firstname, lastname);
               // Console.WriteLine(“Employee {0}’s name is: {1}.{2}.”, 123, firstname, lastname);
}

这是一个实时样本:

enter image description here

ReferralVisitors 是一个存储过程。