包含对与不同上下文关联的查询的引用的 LINQ 表达式

2024-01-05

我有这样的疑问:

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 表达式包含对与不同上下文关联的查询的引用。

  1. 为什么不允许这样做LINQ to Entities?
  2. 还可以吗LINQ to Entities用另一种方式?
  3. 解决这个问题的方法是什么?

我想这是因为您正在构建的语句在幕后转换为 SQL 并在数据库上运行。由于不同的上下文可能来自不同的数据库甚至不同的服务器,因此无法保证在查询服务器时 context2 中的数据可用于 context1。

您可以从每个上下文返回数据并转换为 IEnumerable,然后执行标准 linq 查询,但是数据传输和内存中处理的开销很明显,否则这些开销将由数据库引擎执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包含对与不同上下文关联的查询的引用的 LINQ 表达式 的相关文章

随机推荐