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

时间:2009-09-04 16:17:25

标签: linq-to-sql multiple-databases

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

4 个答案:

答案 0 :(得分:5)

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

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

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

  

< Table Name =“dbo.MyTable1fromMyDatabase1”Member =“MyTable1fromMyDatabase1”>

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

  

< Table Name =“MyDatabase2.dbo.MyTable1fromMyDatabase2”Member =“MyTable1fromMyDatabase2”>

这可以使用相同的登录适用于两个数据库,您的LINQ表达式现在可以在两个数据库中进行查询!

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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