Каким должен быть тип возврата для метода службы WCF, имеющего запрос master-detail Linq-to-entity? - PullRequest
0 голосов
/ 14 января 2011

У меня есть метод обслуживания, написанный следующим образом для приложения Silverlight 4:

    [OperationContract]
    public List<string> GetAll()
    {
       GearsLtdEntities ge = new GearsLtdEntities();
       var query = from a in Employees 
                    join b in Depts
                    on a.DeptID equals b.DeptId
                    group a by b.DeptId into c
                    select new
                    {
                        DeptId = c.Key,
                        Name =
                              from cg in c
                              group cg.Name by cg.Name into g
                              select new
                               {
                                  Name = g.Key
                               }
                   };

        return query;
}

, и я хочу, чтобы данные возвращались таким образом:

alt text

Теперь запрос работает нормально, когда я запускаю его автономно в LINQPad, но когда я запутался, как вернуть результаты обратно из метода.Каким должен быть тип метода?Я попробовал Tried IEnumerable, затем я попробовал IEnumerable, также попробовал класс DeptEmployee, специально созданный для этого, но, похоже, ничего не работает.Пожалуйста, помогите !!

[РЕДАКТИРОВАТЬ] Я также просмотрел прогнозы и службы данных WCF, но не смог найти ни одного полного примера, демонстрирующего это, я вижу фрагменты и фрагменты, и они не помогают мне получить то, чтоЯ хочу.Так может кто-нибудь указать мне на полный рабочий пример использования запроса master-detail в WCF и SL с linq для сущностей, а затем возврата результата из метода сервиса?

Ответы [ 2 ]

1 голос
/ 20 января 2011

Есть ли у вас отношения между Employees и Depts в вашем edmx / конструкторе? (Вы должны!)

Почему бы просто не вернуть коллекцию Depts, где каждый Dept имеет свою собственную коллекцию Employees?

[OperationContract]     
public List<Depts> GetAll()
{        
    GearsLtdEntities ge = new GearsLtdEntities();        
    return ge.Depts.Include("Employees").ToList();
}

Silverlight может легко получить соответствующие свойства из объектов.

Единственная причина, по которой я бы не стал этого делать, заключается в том, что в Employee или Dept содержится значительная часть данных, которые вы не хотите отправлять по проводам. Если это так, то создайте урезанные классы для представления этих двух объектов.

1 голос
/ 14 января 2011

Это анонимный тип, поэтому вам нужно использовать проекцию. Я думаю, что этот пост поможет. Благодарю. http://programming4.us/database/96.aspx

...