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

    }

これにより、SummaryDataSet から SummaryGroup に接続するための情報が RIA に提供されます。

これは、サーバー側サービスから SummaryDataSet と SummaryGroup の両方を要求できることを前提としています。

于 2010-09-22T11:41:46.480 に答える