Вы можете делать это даже на разных серверах, если вы можете получить доступ к одной базе данных с другой. То есть, если возможно написать оператор SQL для ServerA . DatabaseA , который обращается к ServerB . DatabaseB . схема . TableWh независимо от , вы можете сделать то же самое в LINQ.
Для этого вам нужно отредактировать файл .dbml вручную. Вы можете легко сделать это в VS 2008 следующим образом: щелкните правой кнопкой мыши, выберите Открыть с помощью ... и выберите Редактор XML .
Посмотрите на элемент Connection , который должен находиться вверху файла. Вам нужно предоставить явное имя базы данных (и имя сервера, если оно отличается) для таблиц, не входящих в базу данных, на которые указывает эта строка подключения.
Открывающий тег для элемента Table в вашем .dbml выглядит следующим образом:
<Table Name="dbo.Customers" Member="Customers">
Что нужно сделать для любой таблицы , а не в базе данных строки соединения, замените атрибут Name на что-то вроде одного из них:
<Table Name="SomeOtherDatabase.dbo.Customers" Member="Customers">
<Table Name="SomeOtherServer.SomeOtherDatabase.dbo.Customers" Member="Customers">
Если вы столкнулись с проблемами, убедитесь, что другая база данных (или сервер) действительно доступна из исходной базы данных (или сервера). В SQL Server Management Studio попробуйте написать небольшой оператор SQL, работающий с исходной базой данных, который выполняет что-то вроде этого:
SELECT SomeColumn
FROM OtherServer.OtherDatabase.dbo.SomeTable
Если , что не работает, убедитесь, что у вас есть пользователь или логин с доступом к обеим базам данных с одним и тем же паролем. Разумеется, он должен совпадать с тем, который использовался в строке подключения вашего .dbml.