Как поместить сущности и набор сущностей в DTO в Silverlight - WCF RIA?

Я хотел бы сделать DTO, который содержит сущности. Как мне это сделать? Является ли это возможным?

Например, у меня есть что-то вроде этого в моем проекте сервера:

public class MyCustomDTO
{   
    [Key]
    public int id { get; set; }

    public EntityCollection<MyEntity> list { get; set; }

    public MyEntity2 dummyproperty { get; set; }

    public string name{ get; set; }
}

Но на стороне клиента генерируются только базовые типы, а в наборе и типизированном свойстве MyEntity2 - нет.

Моя цель - инкапсулировать несколько разных сущностей в один DTO, а не собирать их с помощью нескольких асинхронных запросов...

Или какие разные решения могут подойти для этого сценария? Я что-то упускаю (некоторые атрибуты) или просто не поддерживается?

2 ответа

Решение

Вам необходимо представить другие объекты в качестве методов обслуживания в дополнение к вашему DTO, чтобы службы RIA могли отслеживать их на стороне клиента. Ваш сервис должен выглядеть так:

public class MyDomainService : LinqToEntitiesDomainService<MyContext>
{
    public IQueryable<MyCustomDto> GetMyCustomDtos()
    {
        //...
    }

    public IQueryable<MyEntity> GetMyEntitys()
    {
        //...
    }

    public IQueryable<MyEntity2> GetMyEntity2s()
    {
        //...
    }
}

Вам также необходимо добавить атрибут [Включить] для ваших сущностей, чтобы они были получены на стороне клиента.

Вы можете отправить сложный тип между клиентом Silverlight и службой RIA WCF, но ваш DTO не должен иметь атрибут [Key], применимый к свойству.

public class MyCustomDTO
{   
    //[Key] // comment this line and there you go.
    public int id { get; set; }

    public List<MyEntity> list { get; set; }

    public MyEntity2 dummyproperty { get; set; }

    public string name{ get; set; }
}

Обновить

Вам необходимо установить WCF RIA Services V1.0 SP1 для Silverlight 4, прежде чем вы сможете использовать сложный тип в своем приложении. WCF RIA Services V1.0 SP1 - хорошая статья об изменениях в этом пакете обновления.

Другие вопросы по тегам