0

既存のデータベースがあり、テーブルなどを追加する必要があります。データベースを制御できないため、同じデータベース内で異なるスキーマの下にテーブルを作成すると思いました。私が理解していることから、これによりテーブルを作成でき、名前の競合などを心配する必要がなくなります。

しかし、EFを介して両方のスキーマに同時にアクセスするにはどうすればよいですか?基本的に2つの異なる接続がありますか?または、2つの異なるコンテキストがありますか?

私が持っている他のオプションは別のデータベースを作成することですが、これがどのような長所と短所を持っているのかわかりません。もちろん、自分のテーブルと他のテーブルの間に内部結合を作成する必要があります。2つの異なるスキーマまたはデータベース間でEFの内部結合を使用することは可能ですか?

私が使用しているデータベースはSQLServer2008R2です。

4

1 に答える 1

0

2つのスキーマのテーブル間の結合を使用する場合は、これらのテーブルの両方を同じコンテキストで定義する必要があります(つまり、単一の接続が使用されます)。

2つの異なるコンテキストタイプを使用して各スキーマを個別にマップするか、2つのデータベースを使用すると、Linq-to-entities / ESQLクエリで他のスキーマのエンティティを使用できなくなり、テーブルへのナビゲーションプロパティを使用できなくなります。他のスキーマから。このような場合の回避策は、2番目のデータベースから最初のデータベースにテーブルを取得するためにエイリアスまたはデータベースビューを使用する必要があるため、複雑です。

EFは、現在のコンテキストにマップされたデータベースオブジェクトでのみ機能し、単一のデータベースへの接続のみを開くことができます(データベースプレフィックスを使用して、同じサーバー上の異なるデータベースのテーブルにアクセスすることもできません)。

于 2012-07-02T11:02:35.460 に答える