2009-10-25 128 views
0

現在我正在做一些涉及entityFramework和WCF的測試。據我所知,生成的EntityObjects是DataContracts,所以它們可以被序列化到客戶端。EntityFramework WCF問題

在我的例子中,我有一個「Country」實體,它有一個「貨幣」作爲屬性,當我得到一個國家並嘗試將它發送給客戶端時,它會拋出一個異常說不能寫入數據。

但是,事情是,如果我得到一個貨幣(其中有一個國家的集合),並不加載其國家,它確實工作。客戶獲取所有實體。

因此,作爲總結: - 我有一個實體與另一個實體作爲一個屬性,不能被序列化。 - 我有另一個具有空屬性列表的實體,它已成功序列化。

關於如何使其工作的任何想法?

回答

0

實體框架默認不會自動加載關聯的實體,例如,如果你加載你的「國家」實體,默認情況下,除非你做了什麼,否則相關的「貨幣」將不會被加載。

您需要做的是在EF查詢中執行.Include("Currency"),或者手動加載關聯的Currency屬性。這是1:1的關係,對吧?在這種情況下,你的Country實體將最有可能包含一個成員叫CurrencyReference,你可以檢查這是否是加載或沒有,如果沒有,您可以手動加載相關實體:

if(!myCountry.CurrencyReference.IsLoaded) 
{ 
    myCountry.CurrencyReference.Load(); 
} 

當你做到這一點,然後序列化通過WCF發送的對象 - 現在可以工作嗎?

Marc

+0

我想他是說只有當他加載和實體並嘗試發送它時纔會發生...... – Nix 2010-04-06 22:04:20