Sql server 如何在Linqpad中使用两个具有Linq to SQL的不同数据库?
我从LINQtoSQL开始,摆弄Linqpad,并尝试复制一个SQL脚本,该脚本连接同一服务器上不同数据库中的表(SQLServer2008) TSQL查询大致如下所示: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
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)。您查询的数据库必须位于同一台服务器上
第二种方法是在“连接属性”对话框中列出要查询的额外数据库。此对话框还允许您从链接服务器中选择数据库。以下是如何继续:
现在可以进行跨数据库查询。只要连接在服务器上而不是在客户端上发生,就可以对它们进行适当的优化。如果创建一个(单个)类型的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)。您查询的数据库必须位于同一台服务器上
第二种方法是在“连接属性”对话框中列出要查询的额外数据库。此对话框还允许您从链接服务器中选择数据库。以下是如何继续:
现在可以进行跨数据库查询。只要连接发生在服务器上而不是客户端上,这些都经过了适当的优化。我不明白。数据库在同一台服务器上。我不明白。数据库在同一台服务器上,所以我需要创建一个程序集,每个表包含一个DataContext类。该程序集将为我需要访问的每个数据库提供这些DataContext类。生成此程序集的过程必须手动完成。啊。如果数据库中的表具有相同的名称,该如何处理?否-程序集应包含一个DataContext,其中包含您希望从两个数据库访问的表。如果出现名称冲突,请为其中一个表类指定一个不同的名称-只要您正确应用了表属性,这并不重要。因此,我需要创建一个程序集,其中包含每个表的一个DataContext类。该程序集将为我需要访问的每个数据库提供这些DataContext类。生成此程序集的过程必须手动完成。啊。如果数据库中的表具有相同的名称,该如何处理?否-程序集应包含一个DataContext,其中包含您希望从两个数据库访问的表。如果出现名称冲突,请为其中一个表类指定一个不同的名称——只要您正确应用了表属性,这就无关紧要了。