0

私には3つのテーブルがあり、多対多の関係があります。たとえば、AuthorsBooksBookAuthorsです。

エンティティフレームワークのedmxファイルを更新して(データベースから更新)、3つのテーブルすべてを選択すると、実際には3つではなく2つのテーブルがEFに表示されます。BookAuthorsは非表示になります。book_id時々私が持っているのはリストだけなので、それは私にとって問題ですauthor_id。そのような場合、私はそれらの値を直接中産階級に保存したいと思います。

「チート」しようとすると、最初のBooksAuthorsを(EFに)更新し、2番目の更新でBookAuthors(またはその逆)を更新すると、edmxに3つのテーブルが表示されますが、コンパイル中にエラーが発生します。

行から始まるフラグメントのマッピングの問題....キーが異なる可能性のある2つのエンティティが同じ行にマッピングされます。これらの2つのマッピングフラグメントが、AssociationSetの両端を対応する列にマップしていることを確認してください。

では、多対多の関係を持ち、同時にミドルテーブルに直接アクセスするにはどうすればよいでしょうか。

4

3 に答える 3

2

中央のテーブルに直接アクセスする必要がある理由がよくわかりません。ただし、ダミーのブール値フィールドをテーブルに追加するだけで (使用されることはありません)、EF は自動非表示を停止します。

于 2013-02-14T15:55:40.793 に答える
2

私の知る限り、中央のテーブルを変更せずにデータベース ファースト アプローチを使用している場合、これは不可能です。モデル ファースト アプローチを適用することを選択した場合は、多対多の関係を追加する代わりに、モデルに中間エンティティを作成し、1 対多の関係を使用します。

中間テーブルに外部キーだけが含まれないように、データベースと別の列を中間テーブルに変更すると、それも適切に機能します。

また、エンティティとしてミドル テーブルにアクセスする必要があるのも不思議です。

于 2013-02-14T15:59:44.763 に答える
1

あなたがやろうとしていること (そして問題に遭遇した場所) はbook_id、既存の本と、author_idその本に追加したい著者のリストを取得することです。

この場合、authors テーブルからすべての著者を取得し、books テーブルから書籍を取得して、著者ごとにBook.Authors.Add(author);.

于 2013-02-14T16:01:38.113 に答える