Domanda

Sto lavorando su un'applicazione Silverlight 4.0 e sto usando i servizi RIA. Ho creato una classe sul lato server che ha DataContract e DataMember attributi applicato ad esso.

Un DomainService espone questa classe come risultato di una query e come tale, genera codice per esso sul client. Ma in qualche modo non genera codice per tutte le proprietà della classe. proprietà primitive di tipo GUID, string, int, bool ecc vengono generate più che bene, ma se ho una proprietà di mio tipo complesso, che la proprietà non viene creato sul client.

Ecco la classe in questione:

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

        }

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

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

    }

La proprietà Guid è creato sul client bene. La proprietà SummaryGroup non viene creato sul client. Ecco il codice per la 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; }
}

Entrambe le classi sono nello stesso spazio dei nomi.

Domanda: perché non è di proprietà di SummaryGroup SummaryDataSet creato sul client e cosa devo fare per risolvere questo problema

?
È stato utile?

Soluzione

WCF RIA non può gestire tipi complessi, ma si potrebbe provare questo:

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

    }

Questo dà RIA le informazioni per la connessione dal SummaryDataSet alla SummaryGroup.

Questo presuppone che si può richiedere sia il SummaryDataSet e SummaryGroup dal servizio serverside.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top