LINQ для нескольких баз данных

У меня есть две таблицы, которые нужно подключить через LINQ, но они живут в разных базах данных. Сейчас я возвращаю результаты одной таблицы, затем перебираю и получаю результаты другой, что, как вы можете догадаться, не очень эффективно. Есть ли способ получить их в один оператор LINQ? Есть ли другой способ построить это, чтобы избежать цикла? Я просто ищу идеи, на случай, если я что-то упустил.

Обратите внимание, что я не могу изменить базы данных, т. Е. Я не могу создать представление в одном, которое ссылается на другое. Что-то, чего я еще не пробовал, это создание представлений в третьей базе данных, которая ссылается на обе таблицы. Любые идеи приветствуются.

Вы можете сделать это, даже на серверах, до тех пор, пока вы можете получить доступ к одной базе данных из другой. То есть, если можно написать инструкцию SQL для ServerA . DatabaseA, который обращается к ServerB . DatabaseB . схема . TableWhatever , то вы можете сделать то же самое в LINQ.

Для этого вам нужно будет вручную отредактировать файл .dbml. Вы можете сделать это в VS 2008 легко следующим образом: Щелкните правой кнопкой мыши, выберите « Открыть с …» и выберите « Редактор XML» .

Посмотрите на элемент Connection , который должен находиться в верхней части файла. Что вам нужно сделать, это предоставить явное имя базы данных (и имя сервера, если оно отличается) для таблиц, не указанных в базе данных, на которые указывает эта строка соединения.

Начальный тег для элемента Table в вашем .dbml выглядит следующим образом:

Что вам нужно сделать, так как любая таблица, не содержащаяся в базе данных строки подключения, измените атрибут Name на что-то вроде одного из них:

 

Если у вас возникли проблемы, убедитесь, что другая firebase database (или сервер) действительно доступна из исходной базы данных (или сервера). В SQL Server Management Studio попробуйте написать небольшой оператор SQL, работающий с вашей исходной базой данных, который делает что-то вроде этого:

 SELECT SomeColumn FROM OtherServer.OtherDatabase.dbo.SomeTable 

Если это не сработает, убедитесь, что у вас есть пользователь или логин с доступом к обоим базам данных с тем же паролем. Разумеется, он должен быть таким же, как тот, который используется в вашей строке подключения .dbml.

Создайте proc / view в своей базе данных.

Учитывая ваши условия, я не думаю, что вы можете сделать это в одном заявлении Linq. Но вы можете присоединить результаты своих запросов L2S к запросу Linq to Objects.

  • NHibernate vs LINQ to SQL
  • LINQ с SQLite (linqtosql)
  • Как динамически добавлять оператор OR в предложение WHERE в LINQ
  • ASP MVC: Когда вызывается IController Dispose ()?
  • Как сравнивать только даты без времени в типах DateTime в Linq to SQL с Entity Framework?
  • LINQ и разбиение на страницы
  • Использование contains () в LINQ to SQL
  • Как создать динамический метод расширения соединения LINQ
  • Макс или по умолчанию?
  • Доступ к свойствам через параметр Generic type
  • Entity Framework vs LINQ to SQL
  • Interesting Posts

    ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup

    селектор кнопок Android

    Как объединить две строки в C?

    Как вертикально центрировать div для всех браузеров?

    Захват хранимой процедуры печати вывода в .NET.

    Как запросить NTP-сервер с помощью C #?

    Преодоление беспроводных и проводных адаптеров моего ноутбука

    Как использовать векторные чертежи в Android API ниже 21?

    Предотrotation расширения содержимого элементов сетки

    Добавить текст в начало каждой другой строки в Notepad ++

    Тип объекта ApplicationUser не является частью модели для текущего контекста

    Команда / сценарий для копирования файлов с определенным ext, который может иметь одно и то же имя, из структуры папок в singe directory и переименовывать

    Почему Ubuntu монтирует неправильный раздел с правами root?

    Порядок вызова конструкторов / деструкторов в наследовании

    Представление нулевого значения в JSON

    Давайте будем гением компьютера.