Frage

Ich arbeite an einer Silverlight 4.0 -Anwendung und verwende RIA -Dienste. Ich habe eine Klasse auf der Serverseite erstellt, auf der DataContract- und DataMember-Attribute darauf angewendet wurden.

Ein Domainservice enthält diese Klasse als Abfrageergebnis und generiert als solche Code für den Client. Aber irgendwie generiert es keinen Code für alle Eigenschaften der Klasse. Primitive Eigenschaften von Typ Guid, String, Int, Bool usw. werden gut generiert. Wenn ich jedoch eine Eigenschaft meines eigenen komplexen Typs habe, wird diese Eigenschaft nicht auf dem Client erstellt.

Hier ist die fragliche Klasse:

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

        }

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

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

    }

Die GUID -Eigenschaft wird auf dem Kunden einwandfrei erstellt. Die SummaryGroup -Eigenschaft wird nicht auf dem Client erstellt. Hier ist der Code für die 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; }
}

Beide Klassen befinden sich im gleichen Namespace.

Frage: Warum ist die SummaryGroup -Eigenschaft von SummaryDataset nicht im Client erstellt und was soll ich tun, um dies zu beheben?

War es hilfreich?

Lösung

WCF RIA kann nicht mit komplexen Typen umgehen, aber Sie könnten dies versuchen:

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

    }

Dadurch gibt es RIA die Informationen, die sie von der SummaryDataset an die SummaryGroup herstellen können.

Dies setzt voraus, dass Sie sowohl den SummaryDataset als auch die SummaryGroup aus dem Serverside -Dienst anfordern können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top