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



我有这样的查询:

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查询,但是你有一个数据传输和内存处理的明显开销,否则将由数据库引擎执行。

最新更新