【问题标题】:select multiple rows from a stored procedure using entity data model使用实体数据模型从存储过程中选择多行
【发布时间】:2012-12-10 15:21:43
【问题描述】:

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

我使用SqlDataReaderSqlCommandSqlConnection 完成了这件事。

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);

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

【问题讨论】:

    标签: c# asp.net sql entity-framework ado.net


    【解决方案1】:

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

    实体团队合作:abcentity

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2013-05-30
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多