簡體   English   中英

多重選擇結果和實體的Linq

[英]Multiple Select result and Linq to Entities

我有一個返回未知數據量的SP,這是我的查詢示例:

MySP:

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

   @counter=@counter+1
END

為了有效地存儲數據,我想使用DataSet,它將每個Selects的結果存儲在每個DataTable中。

由於我的應用程序是基於EF 5的,因此我嘗試使用dbContext對象調用SP,這是我嘗試執行的操作。

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

這似乎無法正常工作。

我考慮過使用經典的ADO.NET解決此問題,並使用SqlDataAdapter ,但是我不確定如何將原始Connection引用從dbContext傳遞給SqlDataAdapter dbContext屬性,因為它的類型不同。

注意:在此問題上,我使用DataSet而不是Entities Collection的原因是因為我從SP獲得的結果可能具有不同的列,因此我不確定Entities Collection是否會這樣做。

我想知道如何使用實體(或SqlAdapter)調用SP來用SP中每個Select的結果填充DataSet中的每個表。

我在EF嶄露頭角,因此,如果我在思考或做任何錯誤的事情,任何小費都可以申請。

您可以嘗試使用此代碼-基於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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM