Linq to sql DBML中两个不同数据库中的表?

Linq to sql DBML中两个不同数据库中的表?,linq-to-sql,multiple-databases,Linq To Sql,Multiple Databases,从一个数据库中拖入两个表后,我切换到另一个数据库并拖入一个表。现在,如果我想用新的连接字符串替换连接字符串,我会收到一条消息。我希望在一个DBML中包含多个数据库中的表。这是可能的吗?我不相信您正在寻找的是可能的,因为DataContext将没有任何简单的方法来解析来自两个独立数据库的结果 如果您希望从两个独立的数据库创建域对象,那么最好的选择是使用两个独立的DBML,然后使用桥接器(GOF)或其他相关设计模式来实例化域对象。另一个选项是在数据库上创建指向另一个的服务器链接,并从“本地”数据库为

从一个数据库中拖入两个表后,我切换到另一个数据库并拖入一个表。现在,如果我想用新的连接字符串替换连接字符串,我会收到一条消息。我希望在一个DBML中包含多个数据库中的表。这是可能的吗?

我不相信您正在寻找的是可能的,因为DataContext将没有任何简单的方法来解析来自两个独立数据库的结果


如果您希望从两个独立的数据库创建域对象,那么最好的选择是使用两个独立的DBML,然后使用桥接器(GOF)或其他相关设计模式来实例化域对象。

另一个选项是在数据库上创建指向另一个的服务器链接,并从“本地”数据库为远程表创建别名。我相信这样您就可以引用它们,就好像它们都在同一个数据库中一样。

完全可以引用同一个DBML中的多个数据库,前提是这些数据库位于同一个SQL Server上

在VisualStudio中,右键单击DBML,单击“打开方式…”,然后选择XML(文本)编辑器和编码

您将看到您拖入的第一个表如下所示:

对于要添加的其他数据库中的表,请按如下方式输入:


假设两个数据库都使用相同的登录名,并且您的
LINQ
表达式现在可以跨两个数据库进行查询,那么这将起作用

我们还可以创建一个视图来查询其他数据库中的表。我们可以选择、插入和更新此视图,这也会影响其他数据库中的表。

虽然这在技术上是正确的答案,但这不是一个糟糕的做法吗?我过去曾处理过链接服务器,根据我的经验,在可维护性或性能方面都不太好。您是否有关于如何工作的链接?我想我也有类似的情况。我有一个主数据库,其中包含客户机列表以及每个客户机的服务器名称和数据库名称。它们都有相同的数据库结构,因此,我想根据所选的客户机,从不同的数据库填充模型。@stephenbayer-您的情况实际上有点不同。由于数据实际上并没有分布在多个数据库中,所以您的工作就简单了一点。创建一个服务(web、soap、rest,在本讨论中无所谓),它将知道如何找到数据库的连接字符串或数据库名称前缀(更安全)。使用客户端标识符作为查找特定数据库的索引。您的应用程序可以查询此客户端数据库,以获取有关如何连接到特定数据库的信息。