1

Ìは現在、ASPNETMVCプロジェクトに取り組んでいます。Entity Frameworkを使用し、データベースファーストのアプローチに従います。データベースはすでに存在します。データベースは、ジャンクションテーブルであっても、すべてのテーブルに指定された単一の主キーがあるという規則を使用して作成されています。

例 :

  • テーブルユーザー:UserId(PK); ユーザー名

  • テーブルUserRole:UserRoleId(PK); UserId(FK); RoleId(FK)

  • テーブルロール:RoleId(PK); 役割名

すでに述べたように、データベースはすでに存在しており、この規則については議論できません。Visual Studioでエンティティデータモデルを作成する場合、3つのエンティティもあります。ただし、ユーザーとロールの2つのエンティティがあることは意味があります。UserRoleエンティティは意味がありません。

Entity Frameworkがテーブルをマップする方法に影響を与えて、それらのリレーショナル(役に立たない)エンティティを取り除くことができる可能性はありますか?

4

1 に答える 1

1

Entity Frameworkがテーブルをマップする方法に影響を与えて、それらのリレーショナル(役に立たない)エンティティを取り除くことができる可能性はありますか?

いいえ、EFデザイナーに強制することはできません。自動ツールを使用する場合、ジャンクションテーブルはもはやジャンクションテーブルとは見なされないため、常に別個のエンティティとしてマップされて終了します-このエンティティに新しい可能性を与える特別なデータ(別個のキー)があります(たとえば、2つのエンティティ間の関係は通常のジャンクションテーブルでは不可能な複数回存在します)。

これを回避する唯一の方法は、ツールのサポートを放棄し、コードマッピングを使用するか、EDMXファイルを手動で書き込み、その追加のキーについてEFに通知しないことです。代わりに、ジャンクションテーブルから予想されるように、複合PKを形成するFKは2つだけであるとEFに信じさせます。明らかに、データベースが個別のPKで許可されている特別な可能性を必要とする場合、これを行うことはできません。

于 2012-03-19T11:59:46.773 に答える