2

EF5 でビューとストアド プロシージャを使用しているプロジェクトがあります。デザイナーにビューを含む EDMX があり、2 つのビュー間で PK と FK の間の関連付けを手動で作成しようとしています。そうすると、最初に次のエラーが発生します。

エラー 5 エラー 3027: 次の EntitySet/AssociationSet - vw_borrowervw_borrower_extension にマッピングが指定されていません

次に、関連付けでテーブル マッピングを実行し、pk と fk を選択すると、次のエラーが表示されます。

エラー 5 エラー 3007: 行 309、351 で始まるフラグメントのマッピングの問題: 列 [borrower_fk] は、両方のフラグメントで異なる概念的なサイド プロパティにマップされています。

1 つのビューでは、主キーの名前は Borrower_pk であり、関連するビューでは、外部キーの名前は Borrower_fk です。

どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

0

外部キーの関連付けを使用し、それを制約としてマップする必要があります。現時点では、独立した関連付けが対応するデータベースにマップされているため、EDMXでは不可能な独立した関連付けをマップしようとしている可能性があります。データベースにはこれらの関係がないため、SSDL(ストレージモデルを説明するEDMXの一部)では記述されておらず、そのため、この方法でマッピングすることはできません。

それでも、エンティティが読み取り専用でない場合(=挿入、更新、および削除操作用にマップされたストアドプロシージャを使用している場合)、これはかなり危険な操作です。EFは、SSDLから変更操作の順序を決定します。SSDLが関係を知らない場合、EFは、親エンティティが子エンティティの前に挿入される必要があること、子が親の前に削除される必要があることなどを認識しません。参照上の制約はありますが、以前の回答からは、エンティティをアルファベット順に処理しているように見えます。

于 2012-09-28T17:04:30.037 に答える
0

私がやったことは、EDMXで外部キーであったフィールドを削除し、関連付けを作成するときに外部キーのプロパティをエンティティに追加することでした。これでエラーが解消されました。ただし、これは理想的なソリューションではありません。コード ファーストのストアド プロシージャのサポートが向上する EF6 が待ちきれません。

于 2012-10-01T13:20:58.827 に答える