Pregunta

Estoy trabajando en una aplicación de Silverlight 4.0 y estoy usando los servicios de RIA. He creado una clase en el lado del servidor que tiene DataContract y DataMember atributos aplicados a la misma.

A DomainService expone esta clase como un resultado de la consulta y, como tal, genera código para ello en el cliente. Pero de alguna manera que no genera código para todas las propiedades de la clase. propiedades primitivas de tipo GUID, cadena, int, bool, etc se generan muy bien, pero si tengo una propiedad de mi propio tipo de complejo, que la propiedad no se crea en el cliente.

Aquí está la clase en cuestión:

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

        }

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

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

    }

La propiedad Guid se crea en el cliente bien. La propiedad SummaryGroup no se crea en el cliente. Aquí está el código para el 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; }
}

Ambas clases están en el mismo espacio de nombres.

Pregunta: ¿por qué no es la propiedad de SummaryGroup SummaryDataSet crea en el cliente y qué debo hacer para solucionar este

?
¿Fue útil?

Solución

WCF RIA no puede manejar tipos de complejos, pero se puede intentar esto:

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

    }

Esto le da a la información RIA para conectarse desde el SummaryDataSet a la SummaryGroup.

Esto supone que se puede solicitar tanto el SummaryDataSet y SummaryGroup del servicio serverside.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top