我通過WCF序列化一個linq對象。 dbml被設置爲單向序列化。使用WCF序列化linq實體
我的對象非常簡單:預算具有BudgetLineItems的集合。每個BudgetLineItem都有一個ItemCateogry。
Budget/BudgetLineItems序列化正常。但是,每個BudgetLineItem上的ItemCateogry都不會。我注意到默認情況下,linq沒有在每個BudgetLineItem的ItemCategory上添加一個[DataMember]。我手動添加了它,並用[IgnoreDataMember]刪除了ItemCategory實體上的任何可能的循環引用。不過,不是運氣。
問題:
能WCF,默認情況下,序列化多到一對一的關係,還是我只是失去了一些東西?我知道序列化數據對於每個BudgetLineItem都會有相同的重複ItemCategory數據,但這很好。
我需要爲此自定義DataContractSerializer嗎?
**編輯**其實,沒有工作(添加[DataMember]),我只是沒有更新客戶端(杜)的服務引用。
新問題:有沒有辦法告訴linqtosql設計器在設計器生成的實體上維護這些[DataMember]和[IgnoreDataMember]字段?否則我需要每次保存dbml時更新它們。
感謝您的信息。爲了成功的序列化,我們必須添加一個[DataMemberIgnore]給任何遞歸的道具(通常是引用回父節點),因爲那些將不會序列化。這涉及到更改dbml,這當然會在每次更改時被覆蓋。它可以工作,但不是非常無縫。如你所知,序列化的對象是_huge_。 幸運的是,這僅僅是一個概念驗證(SQLRS2008消耗WCF層給我們的服務擺脫了redudant邏輯) – ericvg 2009-04-21 16:17:40