Entity Framework IQueryable Ошибка строки запроса

  var academicInfo = Connection.Student_AcademicInfo.WhereSelectedAcademicYear();
                        var sub = (from s in Connection.Students
                                   from si in academicInfo 
                                   where s.RecordId == si.ParentRecordId
                                             && si.InstituteId == UserData.InstituteId
                                   select si);

если я использую этот метод без ошибок, но

var sub = (from s in Connection.Students
                               from si in Connection.Student_AcademicInfo.WhereSelectedAcademicYear()
                               where s.RecordId == si.ParentRecordId
                                         && si.InstituteId == UserData.InstituteId
                               select si);

если я использую этот метод, я вижу ошибку

Ошибка Дополнительная информация: LINQ to Entities не распознает метод System.Linq.IQueryable`1[ImsBase.Core.Database.Student_AcademicInfo] WhereSelectedAcademicYear[Student_AcademicInfo]


person Ebubekir ŞAKAR    schedule 03.12.2015    source источник
comment
каков тип возврата .WhereSelectedAcademicYear()?   -  person Milen    schedule 03.12.2015


Ответы (2)


Проблема, с которой вы столкнулись, заключается в том, что Entity Framework не может фактически запустить ваш код C# как часть своего запроса.

Вам придется реструктурировать, чтобы удалить «WhereSelectedAcademicYear()» в отдельную область, поскольку его нельзя преобразовать в оператор SQL. Просто имейте в виду, что в фоновом режиме всегда должна быть возможность преобразовать то, что вы помещаете в LINQ, в инструкцию sql.

Вот ответ на тот же вопрос здесь: LINQ to Entities не распознает метод

person Chris_    schedule 03.12.2015

Linq to Entity, конечно, не распознает эту функцию.

Некоторые сложные функции не могут быть помещены в круглые скобки функции linq to Entity.

Чтобы решить эту проблему, вам нужно поместить результат сложной функции в простую переменную, а затем выполнить запрос с результатом, как вы делали в первом примере.

person Antoine Pelletier    schedule 03.12.2015