2015-10-09 3 views
0

У меня есть Web API 2 Сервис и WPF OData Client и я работаю с Crystal Reports.Как обрабатывать отношения «один ко многим» в OData Client?

У меня есть две таблицы (Преподаватель, Тема), имеющий один ко многим отношения между ними. Я пытаюсь получить Темы против Teacher_Id.

Ниже приведен код, который я использую:

private string ServiceUri = "http://localhost:50623/odata"; 
    private void pge_TeacherReportPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     var Container = new Default.Container(new Uri(ServiceUri)); 
     ReportDocument report = new ReportDocument(); 
     report.Load("../../TeacherCrystalReport.rpt"); 
     var Teacher = from c in Container.Teachers 
         select new 
         { 
         Name = c.Name, 
         FatherName = c.FatherName, 
         ContactNo = c.ContactNo, 
         Address = c.Address, 
         Religion = c.Religion, 
         CNIC = c.CNIC, 
         Status = c.Status, 
         UserName = c.UserName, 
         Subjects = c.Subjects.Where(s=> s.Teacher_Id == c.Teacher_Id).SingleOrDefault() 
         }; 
     report.SetDataSource(Teacher);    
     rpt_Teacher.ViewerCore.ReportSource = report; 
    } 

Но я не могу сделать так, как я получаю следующее Exception:

необработанное исключение типа «System .NotSupportedException 'произошел в Microsoft.OData.Client.dll

Дополнительная информация: Создание или инициализация экземпляров тип <> f__AnonymousType1`9 [System.String, System.String, System.String, System.String, System.String, System.String, System.String, System.String, QuizSystemClient.RestApiOData.Models.Subject] с выражением c.Subjects.Where (s => (s.Teacher_Id == c.Teacher_Id)). SingleOrDefault() не поддерживается.

Скажите, пожалуйста, как я могу это решить?

ответ

0

Моя проблема решена, в моем коде были внесены следующие изменения.

var Teacher = from c in Container.Teachers 
         select new 
         { 
         Name = c.Name, 
         FatherName = c.FatherName, 
         ContactNo = c.ContactNo, 
         Address = c.Address, 
         Religion = c.Religion, 
         CNIC = c.CNIC, 
         Status = c.Status, 
         UserName = c.UserName, 
         //I had made changes in the following code: 
         Subjects = c.Subjects.Select(s=>s.Subject_Name).FirstOrDefault() 
         }; 
Смежные вопросы