これは、両方のデータベースのオブジェクトのテーブル クラスを含む (単一の) 型指定された DataContext を作成する場合、LINQ to SQL で可能です。このデザイナーはここでは役に立たないので、いくつかのテーブル クラスを手動で作成する必要があります。つまり、VS デザイナーを使用してプライマリ データベースの型指定された DataContext を作成し、アクセスする他のデータベースのテーブルのクラスを手動で追加します。
[Table (Name = "OtherDatabase.dbo.lookup")]
public class Lookup
{
...
}
編集: LINQPad Premium エディションでは、SQL Server を使用してクロスデータベース クエリを実行できるようになりました - 2 つの方法のいずれかです。
最も簡単なのはドラッグ アンド ドロップ アプローチです。Ctrl
キーを押したまま、追加のデータベースをスキーマ エクスプローラーからクエリ エディターにドラッグします。クエリで追加のデータベースにアクセスするには、Northwind.Regions.Take(100) などの database.table 表記を使用します。クエリを実行するデータベースは、同じサーバー上に存在する必要があります。
2 番目の方法は、接続プロパティ ダイアログで照会する追加のデータベースを一覧表示することです。このダイアログでは、リンク サーバーからデータベースを選択することもできます。続行する方法は次のとおりです。
- 新しい LINQ to SQL 接続を追加します。
- [新規または既存のデータベースを指定] を選択し、クエリを実行するプライマリ データベースを選択します。
- チェックボックスをクリックして、
Include Additional Databases
含めたい追加のデータベースを選択します。このダイアログで、リンク サーバーからデータベースを選択することもできます。
クロスデータベース クエリを実行できるようになりました。クライアントではなくサーバーで結合が発生する限り、これらは適切に最適化されます。