2011-06-02 90 views
0

我需要序列化一個對象以將其作爲參數傳遞給Web服務。我遵循了這篇文章的建議: DataContractSerializer Error using Entity Framework 4.0 with WCF 4.0EF Codefirst如何使用動態代理加載對象層次結構關閉

此對象退出複雜,因爲它類似於分層數據結構。

現在我有一個問題,因爲相關的對象(一對多對象)沒有加載,它們的值爲空。

這不是一個問題,如果我使用動態代理,但動態代理對象不序列化用於web服務。

我試圖打開/關閉dbContext中的延遲加載,但它沒有區別。

任何人都知道我可以如何解決這個問題,甚至可能加載代理對象並將其複製到「真實」對象?

感謝

回答

0

如果它是一個關係,你真的必須有,最好的辦法是使用正常的動態代理對象加載數據,並使用類似AutoMapper(或手動轉換)將其轉換成任何你想要通過服務發送。然後您可以確保您要發送的內容被加載並填充。

試圖告訴EF和WCF知道如何自動爲複雜的分層對象進行正確的設置,與手動加載/轉換相比,這並不值得。

+0

嗨,感謝您的提示。 Auto Mapper究竟意味着什麼?如果可能,我試圖避免手動轉換。 – 2011-06-02 13:57:38

+0

[AutoMapper](http://automapper.codeplex.com)是一個可以自動執行一些手動轉換的庫。它試圖找出什麼映射到兩個類之間的內容,而不必編寫代碼來完成它。在這種情況下,它可以幫助減少設置轉換所需的工作量。我認爲你必須以某種方式進行轉換,試圖讓EF和WCF在這種複雜的數據結構上進行非常複雜的操作,而手動操作非常簡單(而且可靠)。 – Tridus 2011-06-02 14:07:03