如何从不同的数据上下文内连接表?

时间:2009-10-08 13:29:19

标签: c# .net linq linq-to-sql inner-join

我有来自两个不同数据上下文的两个表。虽然两个表都来自同一个数据库,但存在两个独立的数据文件。

错误讯息:

  

查询包含对在不同数据上下文中定义的项的引用。

我该如何解决这个问题?任何帮助表示赞赏。感谢。

5 个答案:

答案 0 :(得分:6)

如果您的代码执行以下操作:

from a in dc1.TableA
join b in dc2.TableB on a.id equals b.id
select new { a, b }

...只需将其更改为:

from a in dc1.TableA
join b in dc1.GetTable<TableB>() on a.id equals b.id
select new { a, b }

L2S datacontext使用类上的属性,因此如果你在另一个datacontext上使用GetTable而不是表附加到它上面,那么只需从类def中获取表,列等属性并使用它就像使用它一样它是您在查询中使用的DC的一部分......

答案 1 :(得分:6)

哦Stackoverflow你怎么提供!!

Simulating Cross Context Joins--LINQ/C#

答案 2 :(得分:1)

你没有。数据上下文可能具有不一致的数据库视图。

答案 3 :(得分:1)

另一种解决方案是将结果更改为List()。

var query = (from a in dc1.TableA 
            join b in dc2.TableB on a.id equals b.id 
            select new { a, b }).ToList()

答案 4 :(得分:0)

为什么不在每个上下文中包含必要的表?