如何内部连接来自不同数据上下文的表? [复制]
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()
【讨论】:
以上是关于如何内部连接来自不同数据上下文的表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何概括Rally上下文,以包括来自不同项目的TestCases,这些项目关联到一个TestSet。