我正在开发Silverlight 4.0应用程序,并且正在使用RIA服务。我在服务器端创建了一个类,该类应用于数据合同和DataMember属性。

域服务将此类公开为查询结果,因此,在客户端上为其生成代码。但是某种程度上,它不会为类的所有属性生成代码。类型GUID,字符串,INT,BOOL等的原始属性可以生成,但是如果我拥有自己的复杂类型的属性,则该属性不会在客户端上创建。

这是所讨论的课程:

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

        }

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

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

    }

指南属性是在客户端上创建的。摘要组属性不是在客户端上创建的。这是摘要组的代码:

[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; }
}

这两个类都处于相同的名称空间。

问题:为什么不是在客户端创建的摘要属性的摘要组属性,我该怎么办?

有帮助吗?

解决方案

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提供了从摘要数据集连接到摘要组的信息。

这假设您可以从Siserveride Service请求摘要DataSet和SummaryGroup。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top