Как я могу использовать две разные базы данных с Linq to SQL в Linqpad? - PullRequest
1 голос
/ 23 июня 2010

Я начинаю с Linq To SQL, возиться с Linqpad и пытаюсь продублировать скрипт SQL, который объединяет таблицы в отдельных базах данных на одном сервере (SQL Server 2008).Запрос 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?)

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Это возможно в LINQ to SQL, если вы создаете (один) типизированный DataContext, который содержит классы таблиц для объектов в обеих базах данных.Этот конструктор вам здесь не поможет, поэтому вам придется создавать некоторые классы таблиц вручную.Другими словами, используйте конструктор VS, чтобы создать типизированный DataContext для вашей основной базы данных, затем вручную добавьте классы для таблиц в другой базе данных, к которой вы хотите получить доступ:

[Table (Name = "OtherDatabase.dbo.lookup")]
public class Lookup
{
  ...
}

Редактировать: В версии LINQPad Premium теперь вы можете выполнять запросы к базе данных с SQL Server одним из двух способов.

Самый простой - это метод перетаскивания: удерживайте нажатой клавишу Ctrl, покаперетаскивание дополнительных баз данных из проводника схем в редактор запросов.Чтобы получить доступ к этим дополнительным базам данных в ваших запросах, используйте нотацию database.table, например, Northwind.Regions.Take (100).Запрашиваемые вами базы данных должны находиться на одном сервере.

Второй подход - перечислить дополнительные базы данных, которые вы хотите запросить, в диалоговом окне свойств соединения.В этом диалоговом окне также можно выбрать базы данных из связанных серверов .Вот как это сделать:

  1. Добавить новое соединение LINQ to SQL.
  2. Выберите «Указать новую или существующую базу данных» и выберите основную базу данных, к которой вы хотите выполнить запрос.
  3. Установите флажок Include Additional Databases и выберите дополнительные базы данных, которые вы хотите включить.В этом диалоговом окне вы также можете выбирать базы данных из связанных серверов.

Теперь вы можете выполнять запросы между базами данных.Они должным образом оптимизированы, поскольку объединения будут происходить на сервере, а не на клиенте.

0 голосов
/ 23 июня 2010

Использование связанных серверов с полностью определенными именами для запроса другой базы данных из текущей БД.Это должно работать.

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 
...