2

我正在开发 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 属性,我应该如何解决这个问题?

4

1 回答 1

3

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。

于 2010-09-22T11:41:46.480 回答