LINQ: объединение таблиц MySql и SQL Server

У меня есть связанные данные, хранящиеся в двух совершенно разных базах данных, и мне нужна информация из обеих этих баз данных. Одна из баз данных находится на сервере MySql, а другая - на сервере MS SQL. Не спрашивайте, почему у нас есть связанные данные, хранящиеся на двух совершенно разных серверах, это долгая история.

С точки зрения высокого уровня, мне нужно присоединить MySqlTableA к SQLServerTableB , сделайте некоторые сложные ограничения и, возможно, сделайте некоторые GROUP BY и подсчеты.

Я пытаюсь найти способ сделать соединение этих двух баз данных достаточно простым. Я думал, что LINQ может решить мои проблемы, но, насколько мне известно, я не могу создать единый контекст, который имеет источники как MySql, так и SQL Server. Я могу поместить два источника в разные контексты - используя LinqConnect от Devart для создания контекста MySql, - но LINQ не допускает кросс-контекстных соединений. (Я попробовал описанный здесь метод, но он не сработал: Имитация кросс-контекстных соединений - LINQ / C # )

Итак, каковы мои варианты? Есть ли способ эффективно объединить таблицы на этих двух разных серверах баз данных (через LINQ или иначе), или мне придется перебирать и соединять данные вручную?

EDIT:

Как уже упоминалось, я ' Я уже пробовал обходной путь AsQueryable (), но все равно получаю кросс-контекстное исключение. Вот мой код:

public static MySqlDataContext mysql = new MySqlDataContext();
public static SQLDataContext sql = new SQLDataContext();

public static void Main() {
    var rows = from a in mysql.tableA
               join b in GetTableBs() on a.col equals b.col
               select a;

    //exception gets thrown when rows is enumerated.
    //InvalidOperationException: "The query contains references to items defined on a different data context."
    foreach(var row in rows) {
        ...
    }
}

public static IEnumerable {
    return sql.TableBs.AsQueryable();
}

5
задан Community 23 May 2017 в 10:26
поделиться