问题 。在Linq to Entity中可扩展


在Linq to Entity中,有什么用 .AsExpandable() 到底怎么办?在哪里以及为何使用它?它是否包含所有相关实体进入延迟加载的查询?


11668
2018-06-05 13:32


起源

AsExpandable 不是一个内置的Ling funciotn。如果您正在谈论扩展方法 LinqKit 然后阅读文件以及文件 博客 以此为基础。 - D Stanley
万分感谢。它有所帮助。 - Jitendra Gupta


答案:


“实体框架的查询处理管道无法处理调用表达式,这就是您需要在查询中的第一个对象上调用AsExpandable的原因。通过调用AsExpandable,您可以激活LINQKit的表达式访问者类,它使用实体框架可以理解的更简单的结构替换调用表达式。 “ 约瑟夫·阿尔巴哈里 

有关详细信息,我建议您阅读 LinqPad的作者


9
2018-06-05 17:56





没有从方法组到表达式(相应委托类型)的隐式转换。存在从方法组到匹配签名的委托的隐式转换。因此只有IEnumerable重载匹配。

当然,这并不是说你需要使用lambda。写吧:

。ctx.Set()AsExpandable(),其中(绰号)。 因为你传入一个表达式(毕竟,ByName已经是一个Expression,这正是Queryable.Where所要求的),所以这将作为一个查询进行评估,而不是在linq对象中。


2
2017-08-19 14:59