尝试将实体映射到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
};
}
这个有什么问题? 我该如何解决?
答案 0 :(得分:3)
问题是EF无法将您的功能转换为SQL。最简单的解决方案是使用 inline fun <reified T> consumerFor(consumer: (T) -> Unit) {
consumers.put(T::class.java, consumer)
return this
}
实现数据,然后使用您的函数:
ToList