首页 新闻 会员 周边 捐助

Ef查询中遇到“表达式包含对与不同上下文关联的查询的引用。”错误,解决中遇到一个疑惑,求解释

0
悬赏园豆:5 [已解决问题] 解决于 2016-07-04 17:19

代码1:
var orgUsers = _ef1.GetList(m => true).Distinct();
var result =
    (from apply in _ef2.GetList()
    join orgUser in orgUsers on apply.ManagerUserId equals orgUser.UserID
    select apply).ToList();

代码2:
var orgUsers = _ef1.GetList(m => true).Distinct().AsEnumerable();
var result =
    (from apply in _ef2.GetList().AsEnumerable()
    join orgUser in orgUsers on apply.ManagerUserId equals orgUser.UserID
    select apply).ToList();

代码1会报出错误指定的 LINQ 表达式包含对与不同上下文关联的查询的引用。
但代码2不会,这个AsEnumerable是不是像ToList一样,将数据缓存到本地?

北在北方的主页 北在北方 | 初学一级 | 园豆:180
提问于:2016-07-04 16:34
< >
分享
最佳答案
0

不是。但是你可以这么理解当做是。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30844 | 2016-07-04 16:46

为什么?

北在北方 | 园豆:180 (初学一级) | 2016-07-04 17:20

@北在北方: 几个知识点

1、Iqueryable是Inherit IEnumerable的,所以AsEnumerable只是做的返回类型的转换。

此时并不会本地化。

2、但是IEnumerable数据在另外一个Iqueryable表达式树解析的时候,会本地化。

爱编程的大叔 | 园豆:30844 (高人七级) | 2016-07-04 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册