У меня есть связанные данные, хранящиеся в двух совершенно разных базах данных, и мне нужна информация из обеих этих баз данных. Одна из баз данных находится на сервере 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();
}