Question

Je travaille sur une application Silverlight 4.0 et je l'utilisation des services RIA. J'ai créé une classe sur le côté serveur qui a DataContract et DataMember attributs appliquée.

A DomainService expose cette classe en tant que résultat de la requête et en tant que tel, il génère le code pour le client. Mais d'une certaine manière, il ne génère pas de code pour toutes les propriétés de la classe. Propriétés primitives de type guid, string, int, bool etc sont générés très bien, mais si j'ai une propriété de mon type complexe, que la propriété ne sera créée sur le client.

Voici la classe en question:

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

        }

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

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

    }

La propriété Guid est créé sur le client très bien. La propriété SummaryGroup n'est pas créé sur le client. Voici le code pour le 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; }
}

Les deux classes sont dans le même espace.

Question: pourquoi pas la propriété SummaryGroup de SummaryDataSet créé sur le client et que dois-je faire pour résoudre ce problème

?
Était-ce utile?

La solution

WCF RIA ne peut pas gérer des types complexes, mais vous pouvez essayer ceci:

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

    }

Cela donne l'information RIA pour relier le SummaryDataSet au SummaryGroup.

Cela suppose que vous pouvez demander à la fois la SummaryDataSet et SummaryGroup du service Serverside.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top