在Linq to Entity中,有什么用 .AsExpandable()
到底怎么办?在哪里以及为何使用它?它是否包含所有相关实体进入延迟加载的查询?
在Linq to Entity中,有什么用 .AsExpandable()
到底怎么办?在哪里以及为何使用它?它是否包含所有相关实体进入延迟加载的查询?
“实体框架的查询处理管道无法处理调用表达式,这就是您需要在查询中的第一个对象上调用AsExpandable的原因。通过调用AsExpandable,您可以激活LINQKit的表达式访问者类,它使用实体框架可以理解的更简单的结构替换调用表达式。 “ 约瑟夫·阿尔巴哈里
有关详细信息,我建议您阅读 LinqPad的作者
没有从方法组到表达式(相应委托类型)的隐式转换。存在从方法组到匹配签名的委托的隐式转换。因此只有IEnumerable重载匹配。
当然,这并不是说你需要使用lambda。写吧:
。ctx.Set()AsExpandable(),其中(绰号)。 因为你传入一个表达式(毕竟,ByName已经是一个Expression,这正是Queryable.Where所要求的),所以这将作为一个查询进行评估,而不是在linq对象中。