如何使用LINQ查询两个数据库并合并结果?

时间:2009-03-03 21:49:18

标签: linq

我需要从两个不同的数据库中提取类似表中的值,组合它们然后将输出写入CSV文件。我可以在Properties文件中创建第二个连接字符串,并显式传递DataContext另一个LINQ查询的第二个连接字符串吗?或者我还需要做其他事情吗?除了用于某些标准的ID之外,这些表几乎相同。

我之前从未使用过LINQ,但似乎更容易处理这种必须手工编写SQL的问题。

1 个答案:

答案 0 :(得分:1)

如果模式匹配两个数据库,那么您应该能够只创建第二个DataContext实例(将第二个连接字符串作为参数)。 LINQ to SQL不会以任何方式检查您是否使用“正确”的数据库 - 如果它具有正确的列和&它会起作用。

但是,LINQ不会以任何“智能”方式自动使用多个数据库,因此在执行涉及多个数据源的任何操作之前,需要将内容下载到内存中。您仍然可以使用单个LINQ查询来执行此操作 - 但您必须注意它在内存数据中运行的部分。 (顺便说一句,你可以使用像“ToList”这样的扩展方法来明确地说 - 此时从数据库中获取数据。)

你还提到表格几乎完全相同,除了在某些情况下的ID - 这是否意味着主键/外键不同?在这种情况下,一些自动生成的关系可能无效。如果这意味着存在不同的列名称,则可以手动编辑生成的模式以包含两个列,然后仅使用正确的列。然而,这感觉有点奇怪 - 除非你计划对模式进行一些手动编辑,你也可以生成两个非常相似的模式。