从一个数据库中拖入两个表后,我切换到另一个并拖入一个表。现在,如果我想用新的连接字符串替换连接字符串,我会收到一条消息。我想要一个 DBML 中来自多个数据库的表。这可能吗?
4 回答
完全可以在同一个 DBML 中引用多个数据库,前提是这些数据库驻留在同一个 SQL Server 上。
在 Visual Studio 中,右键单击 DBML,单击“Open with...”,然后选择 XML (Text) Editor with Encoding。
您将看到您拖入的第一个表格如下所示:
<表名="dbo.MyTable1fromMyDatabase1" Member="MyTable1fromMyDatabase1">
对于您希望添加的其他数据库中的表,请输入如下:
<表名="MyDatabase2.dbo.MyTable1fromMyDatabase2" Member="MyTable1fromMyDatabase2">
假设两个数据库使用相同的登录名,这将起作用,并且您的LINQ
表达式现在可以跨两个数据库进行查询!
我不相信您正在寻找的东西是可能的,因为 DataContext 将没有任何简单的方法来解析来自两个单独数据库的结果。
如果您希望从两个独立的数据库创建域对象,那么最好的办法是拥有两个独立的 DBML,然后使用桥接 (GOF) 或其他一些相关的设计模式来实例化您的域对象。
另一种选择是在数据库上创建一个指向另一个的服务器链接,并为“本地”数据库中的远程表设置别名。我相信你可以引用它们,就好像它们都在同一个数据库中一样。
我们还可以创建一个视图来查询另一个数据库中的表。我们可以选择、插入和更新这个视图,这也会影响其他数据库中的表。