我有两个完全独立的数据库上的相关数据,我需要这两个数据库的信息。其中一个数据库位于MySql服务器上,另一个数据库位于MySql上。不要问为什么我们的相关数据生活在两个完全不同的服务器上,这是一个很长的故事。
从高层次的角度来看,我需要加入SQLServerTableB,的MySqlTableA来执行一些复杂的限制,并可能做一些组的BYs和计数。
我正在设法使这两个数据库之间的连接变得相当容易。我认为LINQ可以解决我的问题,但据我所知,我不能创建一个同时具有MySql和Server源的上下文。我可以将这两个源放在不同的上下文中--使用Devart的LinqConnect创建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();
}发布于 2011-06-06 19:45:50
一种选择是通过MySql链接MySql数据库。然后通过Server访问两个数据库。下面是几个如何设置链接和文档的示例:
完成该操作后,您可能希望公开具有存储过程或视图的链接表,以便它们似乎是Server数据库的一部分。
请记住,这种方法(以及我能想到的任何方法)不会特别快。加快跨数据库和网络数据关联的成本是没有魔力的。它最大的好处是它向应用程序开发人员提供了一个一致和简单的数据视图。
https://stackoverflow.com/questions/6256790
复制相似问题