我有这样的疑问:
var list = (from t1 in context1.SomeTable
join t2 in context2.SomeTable on t1.ID equals t2.ID
where //some where clause
select new { t1.SomeField, t2.SomeField }).ToList());
当此查询尝试执行时,我会收到此错误:
指定的 LINQ 表达式包含对与不同上下文关联的查询的引用。
- 为什么不允许这样做
LINQ to Entities
?
- 还可以吗
LINQ to Entities
用另一种方式?
- 解决这个问题的方法是什么?
我想这是因为您正在构建的语句在幕后转换为 SQL 并在数据库上运行。由于不同的上下文可能来自不同的数据库甚至不同的服务器,因此无法保证在查询服务器时 context2 中的数据可用于 context1。
您可以从每个上下文返回数据并转换为 IEnumerable,然后执行标准 linq 查询,但是数据传输和内存中处理的开销很明显,否则这些开销将由数据库引擎执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)