2009-09-04 81 views
5

从一个数据库中拖入两个表后,我切换到另一个表并将其拖入一个表中。现在,如果要将连接字符串替换为新的表,我会收到一条消息。我想要在一个DBML中来自多个数据库的表。这可能吗?来自DBML中两个不同数据库的表?

回答

3

我不相信你在找什么是可能的,因为DataContext没有任何简单的方法来解决来自两个独立数据库的结果。

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

+0

你有链接,这将如何工作?我想我有类似的情况。我有一个主数据库,其中包含客户端列表以及每个客户端的服务器名称和数据库名称。它们都具有相同的数据库结构,因此,我希望根据所选客户机从不同的数据库填充模型。 – stephenbayer 2012-04-26 13:24:56

+1

@stephenbayer - 你的情况实际上有点不同。由于数据并不是实际分布在多个数据库中,因此您的工作更容易一些。创建一个服务(web,soap,rest,这个讨论无关紧要),它将知道如何为你的数据库找到连接字符串或数据库名称前缀(更安全)。使用客户端标识符作为查找特定数据库的索引。您的应用程序可以查询此客户端数据库以获取有关如何连接到特定数据库的信息。 – 2012-04-29 14:55:01

0

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

+0

虽然这是一个技术上正确的答案,但这不是一个不好的做法吗?过去我不得不处理链接的服务器,并且根据我的经验,在可维护性或性能方面并不理想 – 2009-09-04 16:28:16

5

完全有可能在同一个DBML中引用多个数据库,提供这些数据库驻留在同一个SQL Server上。

在Visual Studio中,右键单击DBML,单击“打开方式...”,然后选择带编码的XML(文本)编辑器。

你会看到,你看起来像拖着这是你的第一个表:

<表名= “dbo.MyTable1fromMyDatabase1” 会员= “MyTable1fromMyDatabase1” >

对于其他的表数据库,你想添加,像这样输入:

< Table Name =“MyDatabase2.dbo.MyTable1fromM yDatabase2" 会员=‘MyTable1fromMyDatabase2’>

这将工作假设相同的登录同时适用于数据库,而LINQ表达式现在可以在这两个数据库的查询!

0

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

相关问题