この同様の SO questionが表示されるはずです。実行時にこれを実行できるかどうかはわかりませんが、展開後にこれが可能であることがわかりました. 注意してください、間違いなく落とし穴があります。
異なるデータベース バックエンド間で生成される EDMX ファイルの主な違いは、MSL と SSDL です。私が行ったことは、各データベースとは別に EDMX ファイルを生成することです。どちらも同じ論理データ モデル (CSDL) を持っています。次に、MSL ファイルと SSDL ファイルを抽出し、別のファイルに保存します。それが完了したら、接続文字列でこれらのファイルの正確な場所を指定できます (図を参照)。
<add name="DBConnection" connectionString="metadata=C:\sqlServerEntities.csdl|C:\sqlServerEntities.ssdl|C:\sqlServerEntities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=[machinename];Initial Catalog=[databasename];Persist Security Info=True;User ID=[user];Password=[password];MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
<add name="DBConnection" connectionString="metadata=C:\mdbEntities.csdl|C:\mdbEntities.ssdl|C:\mdbEntities.msl;provider=[mdb provider namespace];provider connection string=[DB connection string]" providerName="System.Data.EntityClient" />
接続先のデータベースに基づいて、実行時に適切な接続文字列を使用する必要があります。ただし、あるシナリオではストアド プロシージャを使用し、別のシナリオではテーブル ベースのマッピングを使用するのが難しいのではないかと心配しています。
もう 1 つの注意事項: プロジェクトに両方の EDMX モデルを残すことはできません。そうしないと、(重複したクラス定義に基づいて) コンパイラ エラーが発生します。ただし、生成された論理クラスをコンパイラが認識できるように、プロジェクトに 1 つ残す必要があります。