此功能只能在实体框架更新后由LINQ调用到实体

问题描述 投票:0回答:1
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到Entities调用此函数。

c# linq entity-framework-6 entities
1个回答
1
投票

问题是,当您尝试使用SqlFunctions时,您已经完成了数据库操作。在运行查询并将结果存储到对象之前,必须放置这些函数。调用AsEnumerable后,查询完成。因此,简短的答案是将包含这些功能的逻辑移至针对DB运行的查询(在Take子句之前)

© www.soinside.com 2019 - 2024. All rights reserved.