Эта функция может быть вызвана только LINQ для Entities после обновления Entity Framework - PullRequest
0 голосов
/ 07 января 2020
var messages = (from sms in
                (from m in rv.tbl_sms_messages
                where m.idtbl_user == ids.id
                where m.sms_date >= days.days7
                orderby m.sms_date descending
                select m)
                .Take(15)
                .AsEnumerable()
                    select new last10msgs 
                    { 
                        dat = SqlFunctions.StringConvert((double)SqlFunctions.DatePart("dd",sms.sms_date)) + " " 
                                + SqlFunctions.DateName("mm", sms.sms_date), message = sms.message 
                    }).AsEnumerable();

Получена ошибка после обновления с EF4 на EF6 +:

Эта функция может быть вызвана только из LINQ to Entities.

1 Ответ

1 голос
/ 07 января 2020

Проблема в том, что вы уже выполнили операцию с БД при попытке использовать SqlFunctions. Эти функции должны быть размещены перед выполнением запроса и сохранением результата в объектах. После звонка AsEnumerable ваш запрос выполнен. Таким образом, короткий ответ - переместить logi c, который содержит эти функции, в запрос, который выполняется к БД (перед предложением Take)

...