如何内部连接来自不同数据上下文的表? [复制]

Posted

技术标签:

【中文标题】如何内部连接来自不同数据上下文的表? [复制]【英文标题】:How to inner join tables from different Data Context? [duplicate] 【发布时间】:2010-12-05 00:00:13 【问题描述】:

我有两个来自两个不同数据上下文的表。尽管两个表都来自同一个数据库,但存在两个单独的数据上下文。

错误信息:

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

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

【问题讨论】:

从业务角度来看,拥有 2 个数据上下文有何意义?通常,我建议每个数据库始终只有 1 个数据上下文并使用它... 这可能没有意义,但这就是我正在使用的。 最好的做法是让一个上下文用于读取和一个用于写入 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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 数据上下文使用类上的属性,因此,如果您在另一个数据上下文上使用 GetTable,而不是表附加到它的数据上下文,则只会从类 def 中获取表、列等属性并像使用它一样它是您在查询中使用的 DC 的一部分...

【讨论】:

必须对版本非常敏感。我的 dc1 没有名为“GetTable”的方法... @PaulGorbas 你确定你使用的是 Linq to SQL 吗?【参考方案3】:

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

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

【讨论】:

以上是关于如何内部连接来自不同数据上下文的表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQLite - 你如何连接来自不同数据库的表?

如何概括Rally上下文,以包括来自不同项目的TestCases,这些项目关联到一个TestSet。

Laravel 4:连接来自不同数据库的表

React Portals 如何在不同的子树中保存来自提供者的上下文?

如何使用实体框架关联来自多个上下文的对象

Mysqli 连接来自 2 个不同数据库的表