何かが変更されましたか、それともまだこれをサポートしていませんか?たとえば、database1.dbo.Usersとdatabase2.dbo.Addressesに参加します
3 に答える
データベースがシノニムをサポートしている場合、EFモデルを複数のデータベースにまたがらせる方法を実際に見つけました。基本的に、Database1のDatabase2にシノニムを設定し、それぞれに個別のedmxモデルを作成してから、XMLをマージします。
興味があれば、edmxファイルを複数のデータベースにまたがらせる正確な手順と、何かが変更されたときにマージを実行するスクリプトをここに投稿しました。
求められているのは、異なるプロバイダーではなく、異なるデータベースのテーブルを結合して、 1つのエンティティを2つ以上のテーブルまたは異なるデータベースのビューにマップできるかどうかだと思います。
考えてみると、Visual StudioでEDMモデルを作成すると、既存のデータベースを指定するように求められ、モデルの作成が完了すると、指定された基になるデータベース接続文字列を内部的にアドレス指定するEF接続文字列が生成されます。
例:metadata = res:// /EFTestModel.csdl | res:// /EFTestModel.ssdl | res:// /EFTestModel.msl;provider = System.Data.SqlClient; プロバイダー接続string="DataSource=。\;InitialCatalog = EFTest; Integrated Security = True; MultipleActiveResultSets = True " *
したがって、各モデルはデータベースのみに一致し、接続文字列のみに一致します。
EF4は、N個のストレージモデルで機能する1つの概念モデルの作成をまだサポートしていません。少なくとも、これは組み込みプロバイダーではサポートされていません。おそらく将来的には、これは(同じプロバイダーまたは異なるプロバイダーからの)多くのストレージのサポートを組み合わせた新しいプロバイダーを介して実行される可能性があります。
私はそれについて十分な調査をしていませんが、おそらくWindows Server AppFabric(Codename Velocity)がこのギャップを乗り越えるための架け橋になる可能性があります。
注:EDM(edmx)のxmlを手動で編集して<edmx:StorageModels>タグ内に2番目の要素を挿入しようとしましたが、EDM XMLスキーマと一致しないため、VSは警告します:エラー10021:スキーマ要素の重複遭遇しました。
ラファオルテガMAP2010
同様の質問への回答を参照してください。