50

私はよく、異なるデータベースのテーブルのデータを比較しています。これらのデータベースには同じスキーマがありません。TSQL では、 DB>user>table構造 ( DB1.dbo.Stores, DB2.dbo.OtherPlaces) を使用してそれらを参照し、比較のためにデータを取得できます。LINQPad のアイデアはかなり気に入っていますが、同じステートメント セット内の 2 つの異なるデータ コンテキストから簡単にデータを取得することはできないようです。

接続文字列を変更して、他のソースから現在のスキーマにデータをプルするように提案する人を見てきましたが、前述のように、これはうまくいきません。FAQ のページをスキップしただけですか? これは、私には利用できないかなり日常的な手順のようです。

「簡単な」世界では、LINQPad が作成する型指定されたデータ コンテキストを簡単に参照できるようにしたいと考えています。それから私は簡単にできます:

DB1DataContext db1 = new DB1DataContext();
DB2DataContext db2 = new DB2DataContext();

そしてそこから作業。

4

6 に答える 6

71

更新: LINQPad でクロスデータベース SQL Server クエリを実行できるようになりました (LINQPad v4.31 以降、LINQPad Premium ライセンスを使用)。この機能を使用するには、Ctrl キーを押しながらデータベースをスキーマ エクスプローラーからクエリ ウィンドウにドラッグします。

リンク サーバー( sp_add_linkedserverを呼び出してリンクしたサーバー)にクエリを実行することもできます。これをする:

  1. 新しい LINQ to SQL 接続を追加します。
  2. [ Specify New or Existing Database]を選択し、クエリを実行するプライマリ データベースを選択します。
  3. [追加のデータベースを含める] チェックボックスをクリックし、リストからリンク サーバーを選択します。
于 2011-02-08T02:05:59.793 に答える
8

いつでも自分で別のコンテキストを作成できることに注意してください。

public FooEntities GetFooContext()
{
   var entityBuilder = new EntityConnectionStringBuilder        
               {        
                    Provider = "Devart.Data.Oracle",        
                    ProviderConnectionString = "User Id=foo;Password=foo;Data Source=Foo.World;Connect Mode=Default;Direct=false",
                    Metadata = @"D:\FooModel.csdl|D:\FooModel.ssdl|D:\FooModel.msl"     
                };

    return new FooEntities(entityBuilder.ToString());
}
于 2012-07-27T13:36:28.847 に答える
3

私はあなたがこれを行うことができるとは思わない。この LinqPad リクエストを参照してください。

ただし、別の dll で複数の dbml ファイルを作成し、LinqPad でそれらを参照することはできます。

于 2009-09-30T14:42:57.173 に答える
3

ドラッグ アンド ドロップ アプローチ: Ctrl キーを押しながら、追加のデータベースをスキーマ エクスプローラーからクエリ エディターにドラッグします。

使用事例:

//Access Northwind

var ID = new Guid("107cc232-0319-4cbe-b137-184c82ac6e12");

LotsOfData.Where(d => d.Id == ID).Dump();

//Access Northwind_v2

this.NORTHWIND_V2.LotsOfData.Where(d => d.Id == ID).Dump();
于 2019-04-05T09:30:38.953 に答える