0

我想要一个存储过程返回多行,并且我正在使用实体数据模型。我还想检索作为输出给出的所有行的列的值。

我已经使用SqlDataReader,SqlCommand和完成了这件事SqlConnection

SqlCommand cmd = new SqlCommand("select leave_details,LID,from_date,to_date from LeaveTable where E_ID=1 and from_date<@toDate and to_date>@fromDate", con);
cmd.Parameters.Add("@toDate", System.Data.SqlDbType.Date);
cmd.Parameters["@toDate"].Value = to_date;
cmd.Parameters.Add("@fromDate", System.Data.SqlDbType.Date);
cmd.Parameters["@fromDate"].Value = from_date;
con.Open();

obj = cmd.ExecuteReader();

我可以使用obj.read().

我可以使用读取特定列的值

leave_id = (int)obj.GetValue(1);

如何通过存储过程完成相同的事情并使用实体数据模型创建函数导入?

4

2 回答 2

1

有几个步骤可以做到这一点我相信这是迄今为止最好的教程,可以在网上找到

http://msdn.microsoft.com/en-us/data/gg699321.aspx

您基本上必须创建一个新的复杂类型,因为您要从多个表中进行选择我相信本教程有一个关于如何执行此操作的示例。基本上,您将在列表中返回一组值,然后您可以从 alist 中读取每个值/对象

于 2012-12-24T05:29:08.060 回答
0

您可以在实体框架对象模型中添加存储过程作为函数导入,同时添加它会询问您返回类型......因此它可以生成复杂的自定义实体。在与存储过程通信时,它将从实体框架中获取数据并将其添加到自定义实体中,因此您将从表中获得多行,当您创建实体对象时再获得一个点,然后您将获得我们设置的函数名称.ToLIst() 到它的调用端,因此它将返回结果集列表。

IE

实体团队合作:abcentity

创建实体对象:abventity abc = new abcentity();

调用 SP 函数:var Result = abc.SPCall(parmae​​ters).tolist();

结果,您将从存储过程中获得结果列表

于 2012-12-24T11:10:25.263 回答