Sql server LINQ到SQL:从两个DB';位于不同服务器上的

Sql server LINQ到SQL:从两个DB';位于不同服务器上的,sql-server,linq-to-sql,cross-database,Sql Server,Linq To Sql,Cross Database,我需要从两个不同SQL Server中的两个不同数据库中的表中获取记录 比如说。服务器1上的销售数据库和服务器2上的购买数据库。Sales和Purchase数据库都有一组表,比如Sales数据库中的table1和Purchase数据库中的table2。 现在,我需要从表1和表2中获得一些记录,这些记录通过加入它们而具有一些公共记录 使用T-SQL,我可以通过链接服务器然后查询它们来实现 请建议,我如何使用LINQ to SQL来实现它,因为我不知道 谢谢。对此,有(至少)两种可能的解决方案 您可

我需要从两个不同SQL Server中的两个不同数据库中的表中获取记录

比如说。服务器1上的销售数据库和服务器2上的购买数据库。Sales和Purchase数据库都有一组表,比如Sales数据库中的table1和Purchase数据库中的table2。 现在,我需要从表1和表2中获得一些记录,这些记录通过加入它们而具有一些公共记录

使用T-SQL,我可以通过链接服务器然后查询它们来实现

请建议,我如何使用LINQ to SQL来实现它,因为我不知道

谢谢。

对此,有(至少)两种可能的解决方案

您可以定义一个存储过程来执行您已经熟悉的跨数据库查询。将存储过程作为方法添加到数据上下文中

或者,您可以为每个数据库定义一个数据上下文,然后在Linq中选择组合。比如:

var table1records = from rec1 in context1.Table1
                    select rec1;

var table2records = from rec2 in context2.Table2
                    select rec2;

var combined = from rec1 in table1records
               join rec2 in table2records on rec1.idColumn equals rec2.idColumn
               select new
               {
                 Rec1 = rec1,
                 Rec2 = rec2
               };
对此,有(至少)两种可能的解决方案

您可以定义一个存储过程来执行您已经熟悉的跨数据库查询。将存储过程作为方法添加到数据上下文中

或者,您可以为每个数据库定义一个数据上下文,然后在Linq中选择组合。比如:

var table1records = from rec1 in context1.Table1
                    select rec1;

var table2records = from rec2 in context2.Table2
                    select rec2;

var combined = from rec1 in table1records
               join rec2 in table2records on rec1.idColumn equals rec2.idColumn
               select new
               {
                 Rec1 = rec1,
                 Rec2 = rec2
               };

您可以在DB1中创建一个引用DB2上表2的视图。

您可以在DB1中创建一个引用DB2上表2的视图