2009-03-03 8 views
1

2つの異なるデータベースから同様のテーブルの値を取り出し、組み合わせて出力をCSVファイルに書き出す必要があります。プロパティファイルで2番目の接続文字列を作成し、他のLINQクエリの2番目の接続文字列をDataContextに明示的に渡すことはできますか?あるいは何か他のことをする必要がありますか?いくつかの基準に使用されているIDを除いて、テーブルはほぼ同じです。2つのデータベースを照会し、LINQを使用して結果を結合するにはどうすればよいですか?

これまでLINQを使ったことはありませんが、SQLを手書きで書く必要はありません。

答えて

1

スキーマが両方のデータベースと一致する場合は、2番目のDataContextインスタンスを作成するだけで済みます(2番目の接続文字列を引数として渡すことができます)。 LINQ to SQLは、 "正しい"データベースを使用しているかどうかは決してチェックしません。もしそれが正しく動作するテーブルの&テーブルを持っているならば。

ただし、LINQは複数のデータベースを「スマート」に自動的に処理しないため、複数のデータソースを含む操作を行う前に、コンテンツをメモリにダウンロードする必要があります。これを行うには、単一のLINQクエリを使用することはできますが、メモリデータで実行中の部分については注意が必要です。 (ところで、 "ToList"のような拡張メソッドを使って明示的に言うことができます - この時点でデータベースからデータを取得する)。

IDがある場合を除いてテーブルがほぼ同一であるとも言われています。これは、プライマリ/外部キーが異なることを意味しますか?その場合、自動生成された関係の中には動作しないものがあります。異なる列名がある場合は、生成されたスキーマを手動で編集して両方の列を含むようにし、次に正しい列のみを使用することができます。しかし、これはちょっと奇妙に思えます。スキーマを手動で編集する予定がない限り、非常によく似た2つのスキーマを生成できます。

関連する問題