Entity Framework - NotSupportedException

var depts = ctx.Departments
            .OrderBy(d => d.deptName)
            .Select(d => d.deptNo);

foreach (int deptNumber in depts) {
    var deptReports = from d in ctx.Departments
                      join r in matchingIncidents on d.deptNo equals r.deptNo
                      where r.deptNo == deptNumber
                      select r;

    int deptReportsCount = deptReports.Count();

Я полностью сбит с толку! Все вопросы об этой ошибке говорят использовать == в примитивных полях (таких как идентификаторы), что я и делаю. Все, что я делаю с этим запросом, генерирует исключение. Точно такой же код работал раньше, и я не знаю, что я с ним сделал! Может кто-нибудь объяснить мне, что происходит?

Кроме того, я помню, что существовал класс EntityFramework с методами, которые позволяли вам преобразовывать объекты в запросе (например, даты), кто-нибудь знает, что это за класс?

ОБНОВИТЬ:

Вот изменения, которые я сделал (теперь это работает).

var deptReports = from r in matchingIncidents
                  join d in ctx.Departments on r.deptNo equals d.deptNo
                  where r.deptNo == deptNumber
                  select r;

2 ответа

Решение

matchingIncidents выглядит как локальная коллекция сложного типа (потому что вы используете r.deptNo). Это не разрешено в LINQ to Entities. Вы можете попробовать это вместо этого:

foreach (int deptNumber in depts) {
    var deptReports = from d in ctx.Departments
                      join r in matchingIncidents.Select(m => m.deptNo)
                          on d.deptNo equals r
                      where r == deptNumber
                      select r;

int deptReportsCount = deptReports.Count();

matchingIncidents.Select(m => m.deptNo) в настоящее время локальная коллекция примитивных типов и deptReports это последовательность int (при условии, что deptNo имеет тип int). Но для подсчета полученных элементов все должно быть хорошо.

редактировать

И вы, вероятно, ищете статический EntityFunctions учебный класс:

http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.aspx

Может ли проблема быть:

join r in matchingIncidents on d.deptNo == r.deptNo
Другие вопросы по тегам