扩展方法& LINQ to Entities无法识别方法错误

时间:2017-03-11 22:42:43

标签: c# entity-framework linq extension-methods dto

尝试将实体映射到DTO时,我收到以下错误。

  

LINQ to Entities无法识别方法' Dto.Team   ToTeamDto(Team,System.String)'方法,这个方法不能   翻译成商店表达。"

这是查询

 bool includeTeam = true;

 var source = from c in db.Standings
                         where c.LeagueID == leagueId
                         select new Standing
                         {
                             id = c.StandingsId,
                             team = includeTeam ? c.Team.ToTeamDto("en-US") : null
                         };

和扩展方法

        internal static Dto.Team ToTeamDto(this Team team, string locale)
        {
            return new Dto.Team
            {
                id = team.TeamID,
                name = team.name
            };
        }

这个有什么问题? 我该如何解决?

1 个答案:

答案 0 :(得分:3)

问题是EF无法将您的功能转换为SQL。最简单的解决方案是使用 inline fun <reified T> consumerFor(consumer: (T) -> Unit) { consumers.put(T::class.java, consumer) return this } 实现数据,然后使用您的函数:

ToList