2009-03-03 63 views
1

我需要从两个不同的数据库中提取类似表中的值,将它们合并,然后将输出写入CSV文件。我可以在属性文件中创建第二个连接字符串,并显式传递DataContext作为另一个LINQ查询的第二个连接字符串吗?还是我需要做点别的?除了用于某些标准的ID之外,这些表几乎相同。如何查询两个数据库并使用LINQ结合结果?

我从来没有使用过LINQ,但似乎更容易处理这种不必手动编写SQL的问题。

回答

1

如果模式匹配两个数据库,那么您应该可以创建第二个DataContext实例(将其作为第二个连接字符串作为参数)。 LINQ to SQL不检查你是否使用“正确”的数据库 - 如果它有正确的列&表,它将工作。但是,LINQ不会自动以任何“智能”方式与多个数据库一起工作,因此在执行任何涉及多个数据源的操作之前,需要将内容下载到内存中。你仍然可以使用单一的LINQ查询来做到这一点 - 但你必须小心它在内存数据中正在运行的部分。 (顺便说一下,你可以使用扩展方法如“ToList”来明确地说 - 在这一点上从数据库中获取数据)。

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