0

Entity Frameworkにエンティティ(Org)があり、別のデータベース(BusinessUnit)にあるテーブルを持つ外部キーがあります。組織にリンクされたBusinessUnitの説明を取得するには、外部キーが必要です。以前(Entity Frameworkのない古いプロジェクト)は、ストアドプロシージャを使用して、結合を使用してBusinessUnitの説明を含むこのエンティティに関するすべての情報を返していました。だから今私の問題は、EntityFrameworkを使用する前と同じ情報を表示する方法です。

データベースからOrgエンティティをロードしたら、BusinessUnitにアクセスしてループを作成し、各Orgの説明を取得しようとしましたが、これは遅すぎます。私の他のアイデアはストアドプロシージャを使用することでしたが、エンティティに追加のフィールドが必要であり、エンティティフレームワークで3004エラーが発生します:プロパティにマッピングが指定されていません。複合型を使用することを考えていましたが、それが必要なものかどうかはわかりません。エンティティにフィールドだけを追加する必要があることを覚えておいてください。その場合、「選択」操作のためだけに複合型を使用し、残りのCRUD操作のために元のエンティティを保持できますか?

どうすればいいですか?

ありがとう。

4

1 に答える 1

0

EFは、複数のデータベース間でクエリを実行することはできません。このようなクエリを実行する必要がある場合は、データベースビューを使用して、ビューを新しいエンティティとしてマップするか(読み取り専用になります。更新可能にするには、ストアドプロシージャの挿入、更新、削除をマッピングする必要があります)、データクエリを2つの別々の部分に分割する必要があります。両方のデータベースからデータをロードします。分割クエリでは、2つのコンテキストを使用するか、ストアドプロシージャを使用して2番目のデータベースからデータを取得できます。

エラーが発生した理由は、EDMXにプロパティを追加したためです。EDMXには、最初のデータベースにマップされたプロパティのみを含めることができます。EDMXはエンティティコードを部分クラスとして生成します。2番目のデータベースから手動で入力されたプロパティが必要な場合は、エンティティの部分部分(部分クラス)を作成し、コードにプロパティを追加する必要があります。

于 2012-06-15T08:02:24.660 に答える