此函数只能在 Entity Framework 更新后由 LINQ to Entities 调用
This function can only be invoked by LINQ to Entities after Entity Framework update
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+ 后出现错误:
This function can only be invoked from LINQ to Entities.
问题是您在尝试使用SqlFunctions
时已经完成了数据库操作。这些函数必须放在 运行 您的查询之前并将结果存储到对象中。调用 AsEnumerable
后,您的查询就完成了。所以简短的回答是将包含这些功能的逻辑移动到针对数据库运行的查询(在 Take
子句之前)
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+ 后出现错误:
This function can only be invoked from LINQ to Entities.
问题是您在尝试使用SqlFunctions
时已经完成了数据库操作。这些函数必须放在 运行 您的查询之前并将结果存储到对象中。调用 AsEnumerable
后,您的查询就完成了。所以简短的回答是将包含这些功能的逻辑移动到针对数据库运行的查询(在 Take
子句之前)