7

EF4がデータベース間の関係をサポートしているかどうか疑問に思っていましたか?例えば:

db1

Author
  Id
  Name

db2

Posts
  Id
  Content
  db1.Author.Id

ef4モデルでこの関係を取得するには、理想的には何をする必要がありますか?

何か考えがありますか?

ありがとう

4

3 に答える 3

5

Microsoft Connectで、現時点でEFによって提供されているサポートに関する質問に答えるこのエントリを見つけました(実際にはまだサポートされていません)。

また、この懸念についてソーシャルMSDNでスレッドを見つけました。

Stack Overflowの他のリンク:

要約すると、与えられた唯一の選択肢は次のとおりです。

  1. EFでのビューの使用

  2. 代わりにNHibernateを使用してください

于 2010-05-10T13:43:01.190 に答える
4

データベースがシノニムをサポートしている場合は、EFをだまして複数のデータベースにまたがらせることができます。私はここでそれを行う方法を書きました。

基本的に、データベースごとにedmxファイルが作成され、それらを1つのedmxファイルにマージするスクリプトが作成されます。シノニムは、実際のテーブル名を使用して1つのデータベースを別のデータベースから参照するために使用されるため、database1からdatabase2.tableにアクセスしようとしても、EFは適合をスローしません。EFモデルでは、2つのデータベース間のリンクを手動で設定する必要がありますが、一度設定すると、マージスクリプトを再実行してもリンクは維持されます。

シノニムを設定し、edmxファイルをマージするためのスクリプトはリンクに掲載されています

于 2011-05-27T16:36:38.360 に答える
3

私は最近、2つのデータベース(1つはOracle、もう1つはSQL Server)でエンティティフレームワークを使用するプロジェクトを開始しました。エンティティフレームワークでのクロスデータベースまたは複数データベースのサポートに関する情報が見つかりませんでした。

MS Entity Frameworkチームからのほとんどの投稿は数年前のものであり、1つのモデルに2つのデータベースを含めることは、まもなく含まれる機能ではないことを示しています。答えはノーだと思いますが、2010年に含まれたかどうかについて具体的な答えを出してみたいと思います。

現在、outプロジェクトは、データベースごとに個別のエンティティモデルを用意することで、この制限を回避しています。これにより、プロジェクトでこれまでに遭遇したシナリオの大部分の問題が解決されました。

2つのデータベースのデータを同時にクエリする必要がある場合は、一方または他方のデータベースにビューを作成するだけです。OracleとSQLServerを使用しているため、このビューではLinked Server(SQL)またはDBLink(Oracle)のいずれかを使用します。

エンティティフレームワークのビューの欠点は、主キーを機能させるために予想よりも多くの時間を費やさなければならなかったことです。

お役に立てれば。

于 2010-05-03T14:39:19.850 に答える