У меня есть DTO, в котором есть коллекция другого DTO, которую я заполняю на стороне сервера и отправляю клиенту. Однако эта внутренняя коллекция DTO не возвращается клиенту.
Я считаю, что мне нужно использовать атрибуты [Include] и [Association], чтобы службы WCF RIA знали, что делать, однако моя проблема с этим заключается в том, что между основным DTO и внутренней коллекцией DTO нет реальной связи, я просто используя его для агрегирования данных из различных источников для возврата клиенту.
Я неправильно понимаю, чего я пытаюсь достичь, если нет, то как мне заставить WCF RIA отправить эту внутреннюю коллекцию DTO.
Я должен добавить, что я использую automapper и хочу добиться этого с помощью такого.
Вот пример, я хочу отправить обратно клиенту одним фрагментом;
- Компетенции, которыми обладает сотрудник.
- Компетенции, необходимые работнику для работы.
- GAP, который представляет собой разницу между 1 и 2.
public class CompetencyRequirementsDto { [Key] public string CompanyId { get; set; } [Key] public string EmployeeNo { get; set; } public string JobId { get; set; } [Include] [Association("EmployeeCompetencies","CompanyId, EmployeeNo","CompanyId, EmployeeNo")] public IList<EmployeeCompetencyDto> EmployeeCompetencies { get; set; } [Include] [Association("JobCompetencies","JobId, CompanyId","JobId, CompanyId")] public IList<JobCompetencyDto> JobCompetencies { get; set; } [Include] [Association("CompetencyGap", "JobId, CompanyId", "JobId, CompanyId")] public IList<JobCompetencyDto> CompetencyGap { get; set; } } }
Теперь пункт 1 работает нормально, а 2 и 3 нет? Я обнаружил, что мой DTO создан на стороне сервера, но когда он доходит до клиента CompetencyGap (даже если он не имеет значений), ему присваиваются значения JobCompetencies.