【发布时间】:2013-09-23 11:57:50
【问题描述】:
我有错误 LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”。
var result = context.Users.Include("Roles")
.OrderBy(x => x.UserID)
.Where(x => !userIsAdmin(x))
.Skip(skip)
.Take(take)
.ToList();
private readonly Func<User, bool> userIsAdmin = u => u.Roles.Any(y => y.Name.Equals(AdminRoleName));
我哪里写错了?
【问题讨论】:
-
@Amit 在这里:
.Where(x => !userIsAdmin(x))。Where从它的 lambda 参数构建一个表达式;在这个表达式中,userIsAdmin 是一个Func,因此,它被翻译成Expression.Invoke 而EntityFramework 不支持Expression.Invoke,因为它不知道如何将其翻译成SQL。