2011-05-10 53 views
0

我有一個存儲過程返回一個DataSet。這個存儲過程在我的C#代碼中通過實體數據模型公開。我如何在我的代碼中獲取DataSet?上下文不斷嘗試自動生成強類型的對象集合。但是,這些對象只代表第一個結果集。我的數據集有4個結果集。下面是我使用的代碼:通過LINQ到SQI加載數據集

using (DBDataContext context = new DBDataContext()) 
{ 
    var myDataSet = context.LoadData(); // Load data is the name of my sproc 

    // how do I get a DataSet here? 
} 

如何通過LINQ到SQL得到一個數據集,或LINQ到EntityDataModel,或不管它是叫什麼名字?

非常感謝您的幫助

+0

可能的重複[如何填充DataSet或DataTable從LINQ查詢結果集?](http://stackoverflow.com/questions/16/how-do-i-fill-a-dataset-or-a-datatable-from-a-linq-query-resultset) – BrokenGlass 2011-05-10 16:21:47

+0

不是一個重複的,因爲這個問題是關於如何處理一個存儲過程,該過程返回LINQ to SQL中具有不同列的多個結果集。 DataSet位是一個紅色的鯡魚。 – 2011-05-10 18:10:05

回答

1

如果你有多個結果集,那麼你需要編寫一些代碼 - 但它並不難:

有在網絡上出有幾個例子 - 如:

他們大多表現出我們所需要的是具有類似延伸您的局部的DataContext:

<FunctionAttribute(Name:="dbo.GetMultipleSets")> _ 
    <ResultType(GetType(Type_1))> _ 
    <ResultType(GetType(Type_2))> _ 
    Public Function GetMultipleSets() As IMultipleResults 
     Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo)) 
     Dim results As IMultipleResults = DirectCast(result.ReturnValue, IMultipleResults) 
     Return results 
    End Function 

或C#,就像這樣:

[Function("dbo.GetMultipleSets"] 
    [ResultType(typeof(Type_1))] 
    [ResultType(typeof(Type_2))] 
    public IMultipleResults GetMultipleSets() 
    { 
     IExecuteResult result = ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())); 
     IMultipleResults results = (IMultipleResults)result.ReturnValue; 
     return results; 
    } 

希望幫助

斯圖爾特