Entity Framework - NotSupportedException - PullRequest
1 голос
/ 01 июня 2011
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 ]

2 голосов
/ 01 июня 2011

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

0 голосов
/ 01 июня 2011

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

join r in matchingIncidents on d.deptNo == r.deptNo
...