異なるデータベースから複数のテーブルを結合する

entity-framework entity-framework-core

質問

私はEntity Frameworkを使用してSQL Serverデータベースと対話するASP.NETコアアプリケーションに取り組んでいます。これまで、 Scaffold-DbContextコマンドを使用してSQL Serverデータベースから新しいモデルを作成していました。たとえ複数のテーブルに基づいてDbContextを作成したいとしても、私は上記のコマンドで-tフラグを使って行うことができます。すべてが単一のSQLデータベースで行われます。

Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2

Scaffold-DbContext parametersコマンドから、別のデータベースを指定するオプションが見つかりませんでした。

新しいシナリオでは、別のSQLデータベースから2つのテーブルを結合する必要があります。異なるデータベースの2つのテーブルで構成されるモデルを作成する方法はありますか?どちらのテーブルもそれらの間に1対1の関係を使用しています。

たとえば、DB1にはtable1があり、DB2にはtable2があります。これらの2つのテーブル(table1とtable2)で構成されるDbContextを作成する方法はありますか?

2つの異なるデータベースから2つのテーブル間の結合を達成する他の方法はありますか?

受け入れられた回答

いいえ、EntityFramework(6.xでもCoreでもない)で行うことはできません。 DbContextはデータベースごとであり、同じDbContext内でのみジョインできます。

ビューを作成し、必要なモデルにビューをマップすることができますが、iirc。ビューのマッピングは依然としてEntityFramework Coreのロードマップ上にあります。 EntityFramework 6.xで動作するかもしれません。

編集:

少なくともあなたはLinq / Fluent APIでそれをすることはできません。あなたは生のクエリを実行することができます。キャッチ:プロジェクトはモデルと正確に一致する必要があります。モデルのフィールドがないことはありません。非エンティティへのアドホックマッピングは、EntityFrameworkコアの将来のバージョンのロードマップにあります



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ