1

Я хотел бы сделать DTO, который содержит Entities. Как мне это сделать? Является ли это возможным?Как поместить объекты и набор объектов внутри DTO в Silverlight - WCF RIA?

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

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, вместо того, чтобы собирать их с несколькими асинхронными запросами ...

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

ответ

0

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

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

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

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

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

0

Вы можете отправить сложный тип между клиентом Silverlight и службой WCF RIA, но ваш 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; } 
} 

Update

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

+0

Я попытался, но затем я получил сообщение об ошибке: «Объект в DomainService не имеет определенного ключа. Объекты, открытые действиями DomainService, должны иметь как минимум одно публичное свойство, помеченное ключом« Атрибут ключа ». Так что, как я прочитал здесь http : //forums.silverlight.net/t/202531.aspx, служба домена RIA может работать только с сущностями, поэтому вы не можете просто отправить сложный тип только как часть объекта. –

+0

Вам нужно установить WCF RIA SP1 для Silverlight, я просто обновляю свой ответ. – Ekk

+0

Я все еще не работал. Я думаю, потому что мой DomainService - это LinqToEntitiesDomainService, я просто не могу отправить обратно что-то еще, кроме объектов. Должен ли я сделать еще один DomainService, который не унаследован от LinqToEntitiesDomainService? (моя текущая служба домена была создана из файла .edmx, и я расширил ее с помощью пользовательских запросов в отдельном файле после того, как я сделал класс обслуживания частичным) –

 Смежные вопросы

  • Нет связанных вопросов^_^