您可以这样做,即使跨服务器,只要您可以从另一个访问一个数据库。也就是说,如果可以针对访问ServerB.DatabaseB.schema.TableWhatever的ServerA.DatabaseA编写SQL语句,那么您可以在LINQ中执行相同的操作。
为此,您需要手动编辑.dbml文件。你可以在VS 2008轻松地做到这一点:右键单击,选择打开方式…,并选择XML编辑器。
看看Connection元素,它应该在文件的顶部。您需要做的是为不在该连接字符串指向的数据库中的表提供显式数据库名称(和服务器名称,如果不同)。
.dbml中的Table元素的开始标签如下所示:
您需要做的是,对于不在连接字符串的数据库中的任何表,将Name属性更改为类似以下之一:
如果遇到问题,请确保其他数据库(或服务器)真正从原始数据库(或服务器)访问。在SQL Server Management Studio中,尝试编写一个对原始数据库运行的小型SQL语句,这样做:
SELECT SomeColumn
FROM OtherServer.OtherDatabase.dbo.SomeTable
如果这不起作用,请确保您具有使用相同密码访问这两个数据库的用户或登录名。它应该,当然,与在.dbml的连接字符串中使用的一样。