我通过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