2010-06-14 59 views
0

我有一個通過網絡遠程處理的共享對象。問題是這個對象有一些EntitySet和EntityRef屬性。當我嘗試運行該程序時,我收到一個異常,告訴我EntitySet未標記爲可序列化。如果我將它標記爲可序列化,一切似乎都可以,但是當我嘗試從傳遞到由EntitySet表示的屬性進行訪問時,我無法使用它。通過網絡遠程處理序列化實體集

任何建議將不勝感激。

在此先感謝。

順便說一句,有誰知道如何更改tcp通道的默認二進制序列化?

回答

0

我終於到達瞭解決方案,讓我解釋一下:

在LinqToSQL兩個表之間註冊的關係(例如1:M)必須聲明對在M側的EntitySet的和的EntityRef另一個。

在我的情況下,我有一個私有屬性,它代表了EntitySet,以及一個用於修改它的公共訪問器。考慮到Linq to Sql需要通過DataContract(對於類)和DataMember(對於屬性)進行明確的裝飾序列化,問題在於我裝飾了公共屬性而不是私有屬性。

之後,一切都變成了石頭! (我已經失去了很多小時,但是我學到了很多序列化)

+1

你介意爲此共享一個代碼片段嗎? – Mark 2012-12-25 21:44:13

+0

嗯..困惑。你介意與我們分享代碼嗎? – Funky81 2013-03-03 02:37:31

0

嘗試將單個屬性和屬性標記爲可序列化,這也應該讓您訪問這些屬性。

需要注意的是Set上的所有事件都需要被序列化。

+0

謝謝。那是我做的第一件事。我用[NonSerialize()]和Serializate選項來裝飾EntitySet。 問題在於,所有涉及您想要序列化的類的類都必須可序列化。 EntitySet從大量的接口中遺留下來,這使序列化該類型的屬性變得很複雜。 – Francisco 2010-06-15 07:04:52

0

我認爲事情會發生在這裏: http://msdn.microsoft.com/en-us/library/bb546184.aspx

有與EntitySet的,系列化的交易的例子。

+0

找到路徑的另一條線索: 「Q.當我嘗試序列化時,出現以下錯誤:」Type'System.Data.Linq.ChangeTracker + StandardChangeTracker'...未標記爲可序列化。 「 A. LINQ to SQL中的代碼生成支持DataContractSerializer序列化,它不支持XmlSerializer或BinaryFormatter。有關更多信息,請參見序列化(LINQ to SQL)。從:http://msdn.microsoft.com/en-us/library/bb386929.aspx – Francisco 2010-06-15 07:21:10