2012-02-02 85 views
1

我已經創建了一個複雜的類型,使用實體框架來存儲我所連接到的數據庫上的存儲過程的結果。我現在正在編寫一個Web服務來返回存儲過程的結果(即我剛剛創建的複雜類型的集合)。我已被特別要求從WCF服務返回SOAP XML。我的理解是,WCF服務會自動處理根據消費者配置返回最合適的響應 - 那麼將返回一個ObjectResult成功地轉換爲XML?或者我必須首先轉換爲名單<>?如果是這樣 - 是否有比循環遍歷對象結果更有效的方法?返回列表<ComplexType>來自ObjectResult <ComplexType> - 它會是XML嗎?

非常感謝,任何幫助認真讚賞。

編輯:我必須解釋,在這種情況下,消費者將是服務器端代碼,我只需要確保它確實返回XML,如果客戶端請求它。

回答

4

由於ObjectResult<T>工具IEnumerable<T>,您可以用IEnumerable擴展方法,並使用獲得T的數組:

ObjectResult<ComplexType> res = ....; 
ComplexType[] array = res.ToArray<ComplexType>(); // res.ToArray() is also fine because of type inference 

還要確保ComplexType是序列化的。

+0

感謝您的迴應Ken,非常感謝。我怎樣才能確保ComplexType是可序列化的?我假設它需要被轉換爲XML。 – 2012-02-02 20:33:01

+0

準確地說:你的類必須是可序列化的,所以它可以轉換爲XML。例如,請參閱http://msdn.microsoft.com/en-us/library/ms731073.aspx。 – ken2k 2012-02-02 20:42:26

+1

雖然我的類是實體模型中的一個複雜類,這是否使事情變得更復雜? – 2012-02-02 21:00:35

-2

我們可以稱之爲直接ToList()

using (var ts = new YourEntityFramework()) 
{ 
    List<complex_object> lst = ts.YourSp().ToList(); 
} 

ObjectResult通過使用ToList轉換()。那麼我們可以在我們的數據訪問層和List上使用ObjectResult來傳遞其他圖層。

+0

'DB_EmployeeEntities','GetSPITems'和原始問題之間是否存在關係? – 2014-06-10 08:36:46

+0

由於以下原因不起作用:'ObjectResult '不包含'ToList'的定義,並且沒有找到接受類型爲'ObjectResult '的第一個參數的擴展方法'ToList' – Jasmine 2017-03-30 23:29:33

相關問題