2012-09-27 63 views
0

我已經返回數據的未知量,這裏的SP是我的查詢爲例:多選結果和LINQ到實體

MySP:

WHILE (@counter <= @SomeParameter) 
BEGIN 
    Select * 
    From tblFoo 
    Where [email protected] 

    @[email protected]+1 
END 

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

由於我的應用程序基於EF 5,我試圖用我的dbContext對象調用我的SP,這是我試圖做的。

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

這似乎不能正常工作。

我想用經典的ADO.NET來解決這件事情,並使用SqlDataAdapter的,但我不知道如何從dbContext原始連接引用傳遞到SqlDataAdapter■連接屬性,因爲它不是同一類型。

注:我使用的數據集,而不是實體集合,在這件事情的原因是因爲我從SP獲得的結果可能有不同的列,所以我不知道,如果實體集合就行了。

我想知道如何調用使用實體我的SP(或SqlAdapter)在我的數據集,每個選擇的從我的SP的成果填補每個表。

我在EF新鮮的,所以如果我想還是做了錯事任何提示將appriciated。

回答

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; 
    } 
+0

@Yakoub,感謝您的回答,我已經想到了這種方式,但不會是亂七八糟的東西,用來連接對象的相同的DataBase? –

+0

@大衛,我很樂意幫助你。是的,你使用相同的字符串連接 –