Clase personalizada con una entidad y servicios RIA / Silverlight

Tengo una clase con este aspecto:

[DataContract]
public class TestBatchWithHistoryResult
{
    [Key]
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string Description { get; set; }
    [DataMember]
    public string LastRequestedBy { get; set; }
    [DataMember]
    public DateTime? LastRun { get; set; }
    [DataMember]
    public Collection<string> LastConfigurations { get; set; }
    [DataMember]
    public TestBatch Entity { get; set; }
}

Cuando construyo el sitio web y el proyecto Silverlight y encuentro que la propiedad Entity no se crea en el código "generado automáticamente" en el lado de Silverlight, pero todas las demás propiedades están presentes.

¿Qué podría estar impidiendo que se cree la propiedad Entity?

Muchas Gracias

Michael

preguntado el 02 de febrero de 12 a las 11:02

2 Respuestas

Si el contrato de datos no es referenciado por ninguno de sus servicios, no estará presente. Solo se generan contratos de datos referenciados. Si no se hace referencia pero debería estarlo (es decir, si es un tipo heredado de uno que se devuelve y se devolverá en algún momento) utilice ServiceKnowTypeAttribute para declararlo al comienzo de su contrato de servicio.

Respondido 02 Feb 12, 15:02

Hola Pablo. La clase TestBatch, devuelta por la propiedad Entity, es referenciada por otras operaciones en el servicio, pero cuando esta clase se genera en el proyecto Silverlight, la propiedad Entity no aparece. Coloqué el atributo KnownType para TestBatch y esta clase en el servicio, pero no tuvo ningún efecto. - Michael

Para que se creen entidades secundarias en el lado del cliente, debe tener un método de servicio que exponga ese tipo de entidad en el lado del servidor, por ejemplo:

public IQueryable<TestBatch> GetTestBatches(){}

Y también necesita tener el atributo Incluir en la propiedad:

[Include]
public TestBatch Entity {get; set;}

Respondido 16 ago 12, 19:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.