0

我有一个返回未知数量数据的 SP,这是我的查询示例:

我的SP:

WHILE (@counter <= @SomeParameter)
BEGIN
   Select *
   From tblFoo
   Where tblFoo.Counter=@counter

   @counter=@counter+1
END

为了有效地存储数据,我想使用 DataSet ,它将在每个 DataTable 中存储每个 Selects 的结果。

由于我的应用程序基于 EF 5 ,我试图用我的dbContext对象调用我的 SP,这就是我试图做的。

var ds=db.Database.SqlQuery<DataSet>("MySP @counter @SomeParameter", value1,value2);

这似乎无法正常工作。

我想使用经典的 ADO.NET 来解决这个问题,并使用SqlDataAdapter,但是我不确定如何将原始 Connection 引用从.Connection 属性传递dbContextSqlDataAdapter.Connection 属性,因为它的类型不同。

注意:在这个问题上我使用 DataSet 而不是 Entities Collection 的原因是因为我从 SP 获得的结果可能有不同的列,因此我不确定 Entities Collection 是否会这样做。

我想知道如何使用实体(或 SqlAdapter)调用我的 SP,以使用我的 SP 中的每个 Select 的结果填充我的 DataSet 中的每个表。

我是 EF 的新手,所以如果我在思考或做错任何事,任何小费都会被告知。

4

1 回答 1

1

您可以尝试使用此代码 - 基于SqlDataAdapter

var connectionString = "...";
using (SqlConnection connection = 
        new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();

         var cmd = new SqlCommand("YourSP", connection);//Adjust your stored procedure name
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add(new SqlParameter("@SomeParameter", YourValue));//Adjust your value

         adapter.SelectCommand = cmd;
         adapter.Fill(dataset);
        return dataset;
    }
于 2012-09-27T09:09:48.823 回答