linq mysql 多表_c# – LINQ:加入MySql和SQL Server表

我有相关数据存在于两个完全独立的数据库中,我需要来自这两个数据库的信息.其中一个数据库存在于MySql服务器上,另一个存在于MS SQL Server上.不要问为什么我们将相关数据存储在两个完全不同的服务器上,这是一个很长的故事.

从高级角度来看,我需要将MySqlTableA连接到SQLServerTableB,执行一些复杂的限制,并可能执行一些GROUP BY和计数.

我正试图找到一种方法,使这两个数据库之间的连接相当容易.我认为LINQ可以解决我的问题,但据我所知,我不能创建一个同时具有MySql和SQL Server源的上下文.我可以将两个源放在不同的上下文中 – 使用Devart的LinqConnect创建MySql上下文 – 但LINQ不允许跨上下文连接. (我尝试了这里描述的方法,但它不起作用:Simulating Cross Context Joins–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 {

return sql.TableBs.AsQueryable();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值