Serialization RIA DomainService未使用DataContracts生成客户端代码

Serialization RIA DomainService未使用DataContracts生成客户端代码,serialization,ria,datacontracts,Serialization,Ria,Datacontracts,我正在开发Silverlight 4.0应用程序,正在使用RIA服务。我在服务器端创建了一个类,该类应用了DataContract和DataMember属性 DomainService将此类作为查询结果公开,并在客户端上为其生成代码。但它并没有为类的所有属性生成代码。guid、string、int、bool等类型的基本属性生成得很好,但如果我有自己复杂类型的属性,则不会在客户端上创建该属性 这是一节有问题的课: [DataContract] [KnownType(typeof(S

我正在开发Silverlight 4.0应用程序,正在使用RIA服务。我在服务器端创建了一个类,该类应用了DataContract和DataMember属性

DomainService将此类作为查询结果公开,并在客户端上为其生成代码。但它并没有为类的所有属性生成代码。guid、string、int、bool等类型的基本属性生成得很好,但如果我有自己复杂类型的属性,则不会在客户端上创建该属性

这是一节有问题的课:

    [DataContract]
    [KnownType(typeof(SummaryGroup))]
    public class SummaryDataSet
    {
        public SummaryDataSet()
        {

        }

        [KeyAttribute]
        [DataMember]
        public Guid Guid { get; set; }

        [DataMember]
        public SummaryGroup SummaryGroup { get; set; }

    }
Guid属性在客户端上创建得很好。未在客户端上创建SummaryGroup属性。下面是SummaryGroup的代码:

[DataContract]
public class SummaryGroup
{
    public SummaryGroup()
    {
    }

    [KeyAttribute]
    [DataMember]
    public Guid Guid { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public int Sequence { get; set; }
}
这两个类位于同一命名空间中


问题:为什么没有在客户端上创建SummaryDataSet的SummaryGroup属性?我应该怎么做才能解决这个问题?

WCF RIA无法处理复杂类型,但您可以尝试以下方法:

    [DataContract]
    [KnownType(typeof(SummaryDataSet))]
    public class SummaryDataSet
    {
        public SummaryDataSet()
        { }

        [KeyAttribute]
        [DataMember]
        public Guid Guid { get; set; }

        [DataMember]
        [Association("SummarySet_SummaryGrp_FK", "Guid", "Guid")]
        public SummaryGroup SummaryGroup { get; set; }

    }
这为RIA提供了从SummaryDataSet连接到SummaryGroup的信息


这假设您可以从服务器端服务请求SummaryDataSet和SummaryGroup。

是的,使用关联确实是一种方法-我现在有事情要做了。相关问题:以前从未听说过术语DTO(数据传输对象),SummaryDataSet会是其中之一吗?我认为这类问题取决于您的观点。这里定义了DTO模式。我认为SummaryDataSet是WCF RIA采用DTO的一个例子。在我的RIA项目中,我经常在这些类型的对象周围有一个包装器,以使它们更适合我的MVVM方法。希望这有帮助。