У меня есть связанные данные, живущие в двух совершенно разных базах данных, и мне нужна информация из обеих этих баз данных.Одна из баз данных находится на сервере MySql, а другая - на MS SQL Server.Не спрашивайте, почему у нас есть связанные данные, живущие на двух совершенно разных серверах, это длинная история.
С точки зрения высокого уровня, мне нужно присоединиться MySqlTableA к SQLServerTableB, выполнить некоторые сложные ограничения и, возможно, выполнить некоторые операции BY BY и подсчета.
Я пытаюсь найти способ сделать соединение этих двух баз данных достаточно простым.Я думал, что LINQ может решить мои проблемы, но, насколько я знаю, я не могу создать один контекст, в котором есть как источники MySql, так и источники SQL Server.Я могу поместить два источника в разные контексты - используя LinqConnect Devart для создания контекста MySql, - но LINQ не допускает соединения между контекстами.(Я попробовал метод, описанный здесь, но он не работал: Имитация перекрестных контекстных соединений - LINQ / C # )
Итак, какие у меня варианты?Есть ли способ эффективно объединить таблицы на этих двух разных серверах баз данных (хотя LINQ или иным образом), или мне придется циклически проходить и объединять данные вручную?
РЕДАКТИРОВАТЬ:
Как уже упоминалось, я уже пробовал обходной путь 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<TableB> {
return sql.TableBs.AsQueryable();
}