Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在Linqpad中使用两个具有Linq to SQL的不同数据库?_Sql Server_Linq_Linq To Sql_Tsql_Linqpad - Fatal编程技术网

Sql server 如何在Linqpad中使用两个具有Linq to SQL的不同数据库?

Sql server 如何在Linqpad中使用两个具有Linq to SQL的不同数据库?,sql-server,linq,linq-to-sql,tsql,linqpad,Sql Server,Linq,Linq To Sql,Tsql,Linqpad,我从LINQtoSQL开始,摆弄Linqpad,并尝试复制一个SQL脚本,该脚本连接同一服务器上不同数据库中的表(SQLServer2008) TSQL查询大致如下所示: using MainDatabase go insert Event_Type(code, description) select distinct t1.code_id, t2.desc from OtherDatabase..codes t1 left join OtherDatabase..lookup

我从LINQtoSQL开始,摆弄Linqpad,并尝试复制一个SQL脚本,该脚本连接同一服务器上不同数据库中的表(SQLServer2008)

TSQL查询大致如下所示:

using MainDatabase
go

insert Event_Type(code, description)

select distinct t1.code_id, t2.desc

from OtherDatabase..codes t1
     left join OtherDatabase..lookup t2 on t1.key_id = t2.key_id and t2.category = 'Action 7'

where t2.desc is not null

我基本上是想弄清楚如何进行跨数据库插入。使用Linq To SQL(在Linqpad中是否可能?

使用具有完全限定名称的链接服务器从当前数据库查询另一个数据库。这应该行得通

using MainDatabase 
go 

insert Event_Type(code, description) 

select distinct t1.code_id, t2.desc 

from <Linked_Server>.OtherDatabase..codes t1 
     left join <Linked_Server>.OtherDatabase..lookup t2 on t1.key_id = t2.key_id and t2.category = 'Action 7' 

where t2.desc is not null 
使用main数据库
去
插入事件类型(代码、说明)
选择不同的t1.code_id,t2.desc
来自.OtherDatabase..code t1
left join.OtherDatabase..在t1.key\u id=t2.key\u id和t2.category='Action 7'上查找t2
其中t2.desc不为空

使用具有完全限定名称的链接服务器从当前数据库查询另一个数据库。这应该行得通

using MainDatabase 
go 

insert Event_Type(code, description) 

select distinct t1.code_id, t2.desc 

from <Linked_Server>.OtherDatabase..codes t1 
     left join <Linked_Server>.OtherDatabase..lookup t2 on t1.key_id = t2.key_id and t2.category = 'Action 7' 

where t2.desc is not null 
使用main数据库
去
插入事件类型(代码、说明)
选择不同的t1.code_id,t2.desc
来自.OtherDatabase..code t1
left join.OtherDatabase..在t1.key\u id=t2.key\u id和t2.category='Action 7'上查找t2
其中t2.desc不为空

如果创建一个(单一)类型的DataContext,其中包含两个数据库中对象的表类,则在LINQ to SQL中这是可能的。此设计器在这里不会帮助您,因此您必须手动创建一些表类。换句话说,使用VS设计器为您的主数据库创建类型化DataContext,然后手动为您希望访问的其他数据库中的表添加类:

[Table (Name = "OtherDatabase.dbo.lookup")]
public class Lookup
{
  ...
}
编辑:在LINQPad Premium edition中,您现在可以通过以下两种方式之一使用SQL Server执行跨数据库查询

最简单的方法是拖放方法:按住
Ctrl
键,同时将其他数据库从模式资源管理器拖动到查询编辑器。要访问查询中的其他数据库,请使用database.table符号,例如Northwind.Regions.Take(100)。您查询的数据库必须位于同一台服务器上

第二种方法是在“连接属性”对话框中列出要查询的额外数据库。此对话框还允许您从链接服务器中选择数据库。以下是如何继续:

  • 添加新的LINQ到SQL连接
  • 选择“指定新数据库或现有数据库”,然后选择要查询的主数据库
  • 单击“包含其他数据库”复选框,然后选择要包含的额外数据库。您还可以在此对话框中从链接服务器中选择数据库

  • 现在可以进行跨数据库查询。只要连接在服务器上而不是在客户端上发生,就可以对它们进行适当的优化。

    如果创建一个(单个)类型的DataContext,其中包含两个数据库中对象的表类,那么在LINQ to SQL中就可以做到这一点。此设计器在这里不会帮助您,因此您必须手动创建一些表类。换句话说,使用VS设计器为您的主数据库创建类型化DataContext,然后手动为您希望访问的其他数据库中的表添加类:

    [Table (Name = "OtherDatabase.dbo.lookup")]
    public class Lookup
    {
      ...
    }
    
    编辑:在LINQPad Premium edition中,您现在可以通过以下两种方式之一使用SQL Server执行跨数据库查询

    最简单的方法是拖放方法:按住
    Ctrl
    键,同时将其他数据库从模式资源管理器拖动到查询编辑器。要访问查询中的其他数据库,请使用database.table符号,例如Northwind.Regions.Take(100)。您查询的数据库必须位于同一台服务器上

    第二种方法是在“连接属性”对话框中列出要查询的额外数据库。此对话框还允许您从链接服务器中选择数据库。以下是如何继续:

  • 添加新的LINQ到SQL连接
  • 选择“指定新数据库或现有数据库”,然后选择要查询的主数据库
  • 单击“包含其他数据库”复选框,然后选择要包含的额外数据库。您还可以在此对话框中从链接服务器中选择数据库

  • 现在可以进行跨数据库查询。只要连接发生在服务器上而不是客户端上,这些都经过了适当的优化。

    我不明白。数据库在同一台服务器上。我不明白。数据库在同一台服务器上,所以我需要创建一个程序集,每个表包含一个DataContext类。该程序集将为我需要访问的每个数据库提供这些DataContext类。生成此程序集的过程必须手动完成。啊。如果数据库中的表具有相同的名称,该如何处理?否-程序集应包含一个DataContext,其中包含您希望从两个数据库访问的表。如果出现名称冲突,请为其中一个表类指定一个不同的名称-只要您正确应用了表属性,这并不重要。因此,我需要创建一个程序集,其中包含每个表的一个DataContext类。该程序集将为我需要访问的每个数据库提供这些DataContext类。生成此程序集的过程必须手动完成。啊。如果数据库中的表具有相同的名称,该如何处理?否-程序集应包含一个DataContext,其中包含您希望从两个数据库访问的表。如果出现名称冲突,请为其中一个表类指定一个不同的名称——只要您正确应用了表属性,这就无关紧要了。